如何使用JPath选择具有指定值的子项的集合项?

时间:2015-09-16 09:19:40

标签: c# json.net

我正在使用Newtonsoft Json.Net的SelectTokens()。 我试图从一个对象列表中选择值,其中每个对象都有一个自然键和一个值。

jobAsJObject.SelectTokens("$.SeparatedContexts[.ContextName='default']")

我无法理解这一点,因为我找到的所有示例都不包括根据子属性选择项目。

1 个答案:

答案 0 :(得分:2)

可以在Querying JSON with JSONPathJSONPath - XPath for JSON找到JSONPath查询的文档。除此之外,您还可以为具有特定属性值的子项筛选数组。语法是:

[?(@.PropertyName='PropertyValue')]

因此,要在名为'ContextName' : 'default'的数组中选择属性为'SeparatedContexts'的所有元素,请执行:

var tokens = jobAsJObject.SelectTokens("SeparatedContexts[?(@.ContextName == 'default')]");

当然,您可以随时添加Linq Where子句:

var token = jobAsJObject.SelectTokens("SeparatedContexts[*]")
                        .Where(o => (string)o.SelectToken("ContextName") == "default");

工作fiddle