Json.NET 使用的 JsonPath 语法是什么?
What is the JsonPath syntax used by Json.NET?
我正在尝试 select 某些具有 Json.NET SelectTokens
的节点,它似乎不支持 original jsonpath 支持的相同语法。鉴于此输入:
{
"a": [
{
"id": 1
}
],
"b": [
{
"id": 2
},
{
"id": 3,
"c": {
"id": 4
}
}
],
"d": [
{
"id": 5
}
]
}
我只想要 a
和 b
中所有顶级对象的 ID,而不是内部对象的 ID。使用 gossner 的解析器,我可以这样做:$.[a,b].*.id
,它 returns [1, 2, 3]
.
Json.NET 似乎既不支持逗号也不支持 *。如何使用 Json.NET 实现这一点,是否有任何关于 Json.NET jpath selectors 支持的内容的参考?
以下路径适用于 Json.NET 10.0.2:
var path = @"$.['a','b'][*].id";
此路径似乎与 original JsonPATH article 一致,其中指出:
JSONPath expressions can use the dot–notation
$.store.book[0].title
or the bracket–notation
$['store']['book'][0]['title']
具体来说:
括号内的名称显示为引号。大概这样做可以区分索引和数字名称。
数组索引始终显示在括号中而不是句点之间。
示例 fiddle.
(老实说,原文有些含糊,允许在实现中有所变化。例如,script expression, using the underlying script engine 到底是什么意思?)
我正在尝试 select 某些具有 Json.NET SelectTokens
的节点,它似乎不支持 original jsonpath 支持的相同语法。鉴于此输入:
{
"a": [
{
"id": 1
}
],
"b": [
{
"id": 2
},
{
"id": 3,
"c": {
"id": 4
}
}
],
"d": [
{
"id": 5
}
]
}
我只想要 a
和 b
中所有顶级对象的 ID,而不是内部对象的 ID。使用 gossner 的解析器,我可以这样做:$.[a,b].*.id
,它 returns [1, 2, 3]
.
Json.NET 似乎既不支持逗号也不支持 *。如何使用 Json.NET 实现这一点,是否有任何关于 Json.NET jpath selectors 支持的内容的参考?
以下路径适用于 Json.NET 10.0.2:
var path = @"$.['a','b'][*].id";
此路径似乎与 original JsonPATH article 一致,其中指出:
JSONPath expressions can use the dot–notation
$.store.book[0].title
or the bracket–notation
$['store']['book'][0]['title']
具体来说:
括号内的名称显示为引号。大概这样做可以区分索引和数字名称。
数组索引始终显示在括号中而不是句点之间。
示例 fiddle.
(老实说,原文有些含糊,允许在实现中有所变化。例如,script expression, using the underlying script engine 到底是什么意思?)