访问JObject列表中的值

时间:2015-04-22 13:20:28

标签: c# json

我有一个JObject以类似的格式返回值,

{
    "0": {
        "OPTION_LIST_ID": 1,
        "NAME": "listname",

    },
    "1": [
        {
            "OPTION_ID": 1,
            "OPTION_LIST_ID": 1,
            "KEY_VALUE": "value1",
            "LABEL": "label1"
        },
        {
            "OPTION_ID": 2,
            "OPTION_LIST_ID": 1,
            "KEY_VALUE": "value2",
            "LABEL": "label2"
        }
    ]

我希望能够循环遍历此列表并返回列表中的最后一个值,然后从输入的最后一个选项中访问KEY_VALUE,我真的很想知道如何实现这一点。

   foreach (JObject content in jArray.Children<JObject>())
   {
    ...
   }

我有这个代码可以返回上面的内容,但我真的不知道如何尝试获取列表中的最后一个选项。

1 个答案:

答案 0 :(得分:0)

使用JSON.net执行此操作(不使用循环遍历数组)的最简单方法可能是直接访问您的对象:

dynamic result = JsonConvert.DeserializeObject(yourJson);
var value2 = result["1"][1].KEY_VALUE; // property "1" -> object in array at index 1
// output: value2

但如果你真的想要循环我就这样做:

foreach (JToken property in result)
{
    var arrays = property.Children<JArray>();
    foreach (var array in arrays)
    {
        foreach (var item in array)
        {
            var val = item.Value<string>("KEY_VALUE");
            Console.WriteLine(val);
        }
    }
}
// output: value1, value2