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



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

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

我不明白,因为我找到的例子中没有一个涉及到根据子属性选择项。

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

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

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

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

当然,您总是可以附加一个Linq Where子句来代替:

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

工作小提琴。

相关内容

  • 没有找到相关文章