【问题标题】:Facing issue while deserializing the http resposne [duplicate]反序列化http响应时面临问题[重复]
【发布时间】:2016-02-25 10:25:13
【问题描述】:

我正在使用 JavaScriptserializer 反序列化 HTTP 响应并转换回对象。

获取响应的代码:

 using (var response = (HttpWebResponse)request.GetResponse())
  {
    var responseValue = string.Empty;

    if (response.StatusCode != HttpStatusCode.OK)
    {
      var message = String.Format("Request failed. Received HTTP {0}", response.StatusCode);
      throw new ApplicationException(message);
    }

    using (var reader = new StreamReader(response.GetResponseStream()))
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        var objText = reader.ReadToEnd();

        var myobj = js.Deserialize<List<NPIObj>>(objText);

    }

我得到如下 JSON 字符串: 对象文本:

{
  "NPI": [
    {
      "NPI": "1003000118",
      "EntityType": "Organization",
      "IsOrgSubpart": "N",
      "OrgName": "STEVEN ENGEL PEDIATRICS",
      "FirstLineMailingAddress": "1700 NEUSE BLVD",
      "MailingAddressCityName": "NEW BERN",
      "MailingAddressStateName": "NC",
      "MailingAddressPostalCode": "28560-2304",
      "MailingAddressCountryCode": "US",
      "MailingAddressTelephoneNumber": "252-637-3799",
      "MailingAddressFaxNumber": "252-633-0944",
      "FirstLinePracticeLocationAddress": "1700 NEUSE BLVD",
      "PracticeLocationAddressCityName": "NEW BERN",
      "PracticeLocationAddressStateName": "NC",
    }
  ]
}

问题发生了,我能够在 objText 变量中获得 JSON 响应。 但是当我尝试反序列化对 NPIObj 的响应时,计数为 0。

 var myobj = js.Deserialize<List<NPIObj>>(objText);

myobj 变量的计数为 0,即使我收到 JSON 响应。

这是我的 NPIObj 类:

public class NPIObj
    {
        public string EntityType { get; set; }
        public string FirstLineMailingAddress { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string MailingAddressCityName { get; set; }
        public string MailingAddressCountryCode { get; set; }
        public string MailingAddressPostalCode { get; set; }
        public string MailingAddressStateName { get; set; }
        public string MiddleName { get; set; }
        public string NamePrefix { get; set; }
        public string NPI { get; set; }
        public string OrgName { get; set; }
        public string SecondLineMailingAddress { get; set; }

    }

谁能帮助我如何获得对 NPIObj 的回复?

【问题讨论】:

    标签: c# json deserialization httpresponse javascriptserializer


    【解决方案1】:

    您的 json 中有一个根属性:NPI。所以你不是反序列化数组而是根对象。

    创建另一个类:

    public class NPIRoot 
    {
      public List<NPIObj> NPI { get; set; }
    }
    

    然后

    var myobj = js.Deserialize<NPIRoot>(objText);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多