使用JSON.net反序列化JSON数组

时间:2015-05-27 13:39:59

标签: c# json windows-phone-8 windows-phone json.net

我从EPA的UV Index API获得了一些JSON。 json是一个包含单独元素的数组。 JSON示例:

foreach

为了解析它,我假设我可以使用JObject EPAData = JObject.Parse(b.Result); foreach (var UVIndex in EPAData.Root) { string uv = (string)UVIndex["UV_VALUE"]; //Do whatever I want with the UV index }; 语句来检索每个元素的UV索引属性的值。 b.Result是上面的JSON。

{{1}}

然而,这似乎并没有起作用。我收到一条错误消息:

  

应用程序出错:从JsonReader读取JObject时出错。当前   JsonReader项不是对象:StartArray。路径'',第1行,   位置1。

2 个答案:

答案 0 :(得分:1)

您的JSON代表一个数组,而不是一个对象,因此请改用JArray.Parse

JArray EPAData = JArray.Parse(b.Result);

foreach (var UVIndex in EPAData)
{
    Console.WriteLine (UVIndex["UV_VALUE"]); // 0, 1, 1, etc.
}

示例: https://dotnetfiddle.net/G4PkSf

答案 1 :(得分:0)

如果您想获得Uv_VALUE的值,只是它很简单,您可以使用此代码:

        var json = JArray.Parse(s);
        var list_items = json.Children<JObject>().Properties().Where(p => p.Name == "UV_VALUE").ToList();
        list_items.ForEach(c=>Console.WriteLine(c.Name+" "+c.Value));