JSON - 在数组中查找值

时间:2015-08-13 17:02:35

标签: json json.net

使用以下json

find_*

如何以最简洁的编码方式浏览数据数组,看看是否有任何feature_name与给定字符串匹配?

1 个答案:

答案 0 :(得分:2)

由于您的JSON包含嵌套的带引号的JSON,因此您需要使用LINQ to JSON进行嵌套反序列化来解析Data数组。完成此操作后,您可以使用use SelectTokens查询JSONPath query以查找名为feature_name的嵌套属性,然后检查其值:

        var testString = "Account Summary";
        var found = JToken.Parse(JObject.Parse(jsonString)["Data"].ToString()).SelectTokens("..feature_name").Any(t => (string)t == testString);
        Debug.Assert(found == true); // No assert.

<强>更新

如果您希望所有JObject "feature_name"属性与给定值匹配,您可以执行以下操作:

        var foundItems = JToken.Parse(JObject.Parse(jsonString)["Data"].ToString())
            .SelectTokens("..feature_name")
            .Where(t => (string)t == testString)
            .Select(t => t.Ancestors().OfType<JObject>().First()) // Get the immediate parent JObject of the matching value
            .ToList();