使用以下json
find_*
如何以最简洁的编码方式浏览数据数组,看看是否有任何feature_name与给定字符串匹配?
答案 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();