C# HttpClient和带有数组的JSON
我想解析JSON文件,当我使用不带数组的JSON时,一切都正常,但当我尝试使用带数组的JSON时,我得到了未处理的异常 我的JSON:C# HttpClient和带有数组的JSON,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我想解析JSON文件,当我使用不带数组的JSON时,一切都正常,但当我尝试使用带数组的JSON时,我得到了未处理的异常 我的JSON: { "odata.metadata":"http://212.182.24.861:12345/DataService.svc", "value":[ { "Event_p":[ ], "Id":1, "Status":0, "Na
{
"odata.metadata":"http://212.182.24.861:12345/DataService.svc",
"value":[
{
"Event_p":[
],
"Id":1,
"Status":0,
"Name":"test"
},
{
"Event_p":[
],
"Id":2,
"Status":0,
"Name":"test"
}
]
}
我的任务:
public async Task<IEnumerable<Event>> LoadEvents()
{
HttpClient httpClient = new HttpClient();
var response = await httpClient.GetAsync("address");
var jsonString = await response.Content.ReadAsStringAsync();
var values = JsonConvert.DeserializeObject<ObservableCollection<Event>>(jsonString);
return values;
}
如果不想重写事件类,还可以使用JSON.NET提供的LINQ to JSON手动解析JSON响应:
var parsed = JObject.Parse(jsonString);
var events = parsed["value"].Select(
e => new Event { Name = e["Name"].ToString() });
var values = new ObservableCollection<Event>(events);
或者更干净一点:
var values = JObject.Parse(jsonString)["value"].ToObject<ObservableCollection<Event>>();
事件类定义与您试图解析的JSON文件的结构不匹配。如果您的JSON看起来像下面这样,那么它可能会成功解析。[{Event_p:[],Id:1,Status:0,Name:test},{Event_p:[],Id:2,Status:0,Name:test}]我无法编辑JSON,我可以对我的事件类做什么?使用名为Value of type List的属性定义一个新类,然后将JSON反序列化为该类。
var values = JObject.Parse(jsonString)["value"].ToObject<ObservableCollection<Event>>();