反序列化 http 回复时遇到问题

本文关键字:遇到 问题 回复 http 反序列化 | 更新日期: 2023-09-27 18:36:12

我正在使用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的回复?

反序列化 http 回复时遇到问题

你的 json 中有一个根属性:NPI .因此,您不是在反序列化数组,而是在反序列化根对象。

创建另一个类:

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

然后

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