Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpClient和带有数组的JSON_C#_Xaml_Windows Phone 8 - Fatal编程技术网

C# HttpClient和带有数组的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

我想解析JSON文件,当我使用不带数组的JSON时,一切都正常,但当我尝试使用带数组的JSON时,我得到了未处理的异常

我的JSON:

{  
   "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>>();