我正在尝试使用Json.NET SelectTokens
选择一些节点,它似乎不支持original jsonpath支持的相同语法。鉴于此输入:
{
"a": [
{
"id": 1
}
],
"b": [
{
"id": 2
},
{
"id": 3,
"c": {
"id": 4
}
}
],
"d": [
{
"id": 5
}
]
}
我只希望a
和b
内的所有顶级对象的ID,而不是内部对象的ID。使用goessner的解析器,我可以使用:$.[a,b].*.id
,它返回[1, 2, 3]
。
Json.NET似乎既不支持逗号也不支持*。如何使用Json.NET实现这一点,是否有任何关于Json.NET jpath选择器支持的参考?
答案 0 :(得分:4)
以下路径适用于Json.NET 10.0.2:
var path = @"$.['a','b'][*].id";
此路径似乎与original JsonPATH article一致,其中指出:
JSONPath表达式可以使用点符号
$.store.book[0].title
或括号 - 符号
$['store']['book'][0]['title']
具体做法是:
括号内的名称显示为引用。据推测,这样做可以区分索引和数字名称。
数组索引始终显示在括号内,而不是句点之间。
示例fiddle。
(老实说,原始文章有些模糊,允许实现变化。例如,脚本表达式,使用底层脚本引擎究竟是什么意思?)