反序列化 http 响应时遇到问题

Facing issue while deserializing the http resposne

我正在使用 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 class:

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 的响应?

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

创建另一个 class:

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

然后

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