如何在列表对象中反序列化响应JSON
本文关键字:反序列化 响应 JSON 对象 列表 | 更新日期: 2023-09-27 17:59:43
我有一个C#应用程序,它发送一个http请求并从WebServer接收响应。
这是代码,它发现:
String url = "http://myurl";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.Method = "GET";
using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
{
log.Info(httpResponse);
using (var reader = new StreamReader(httpResponse.GetResponseStream()))
{
JavaScriptSerializer js = new JavaScriptSerializer();
var objText = reader.ReadToEnd();
ResponseJSON myojb = (ResponseJSON)js.Deserialize(objText, typeof(ResponseJSON));
}
}
objText包含该响应
"{"status":1,
"message":"Ok",
"people":[
{
"fiscalCode":"ASSISTITO2",
"name":"Marco",
"surname":"Puzzolante",
"sex":"M",
"bornDate":null,
"cityCode":null
},
{"fiscalCode":"PLMLCU",
"name":"Luca",
"surname":"Palumbo",
"sex":"M",
"bornDate":"1983-04-22T00:00:00",
"cityCode":"FO"
}
]
}"
现在我有了这个对象"ResponseJSON"。它只填充了两个字段(状态和消息)。响应JSON是:
public class ResponseJSON
{
public int status { set; get; }
public String message { set; get; }
public List<Person> person { set; get; }
}
此对象没有填充人员列表。
对象Person是:
public class Person
{
public String fiscalCode { set; get; }
public String name { set; get; }
public String surname { set; get; }
public String sex { set; get; }
public String bornDate { set; get; }
public String cityCode { set; get; }
public String provinceCode { set; get; }
public String username { set; get; }
public String bloodGroup { set; get; }
}
我的错误在哪里?
我们能帮我吗?
调节
您的ResponseJSON
类与JSON不匹配。
将person
属性更改为people
以反映JSON。
public class ResponseJSON
{
public int Status { set; get; }
public String Message { set; get; }
public List<Person> People { set; get; }
}
JavaScriptSerializer
将反序列化不区分大小写,因此如果您的JSON是camelCase,则可以PascalCase您的属性。
此外,还有一个Deserialize
:的通用过载
var myojb = js.Deserialize<ResponseJSON>(objText);