Json.NET 使用的 JsonPath 语法是什么?

Nat*_*tan 3 json json.net jsonpath

我正在尝试使用 Json.NET 选择一些节点,SelectTokens它似乎不支持原始 jsonpath支持的相同语法。鉴于此输入:

{
    "a": [
        {
            "id": 1
        }
    ],
    "b": [
        {
            "id": 2
        },
        {
            "id": 3,
            "c": {
                "id": 4
            }
        }
    ],
    "d": [
        {
            "id": 5
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

a我只想要内部所有顶级对象的 id b,而不是内部对象的 id。使用 gossner 的解析器我可以这样做:$.[a,b].*.id,它返回[1, 2, 3]

Json.NET 似乎既不支持逗号也不支持 *。如何使用 Json.NET 实现这一点?是否有关于 Json.NET jpath 选择器支持的内容的参考?

dbc*_*dbc 6

以下路径适用于 Json.NET 10.0.2:

\n\n
var path = @"$.[\'a\',\'b\'][*].id";\n
Run Code Online (Sandbox Code Playgroud)\n\n

该路径似乎与原始 JsonPATH 文章一致,其中指出:

\n\n
\n

JSONPath 表达式可以使用 dot\xe2\x80\x93 表示法

\n\n

$.store.book[0].title

\n\n

或括号\xe2\x80\x93符号

\n\n

$[\'store\'][\'book\'][0][\'title\']

\n
\n\n

具体来说:

\n\n
    \n
  • 括号内的名称显示为被引用。据推测,这样做可以区分索引和数字名称。

  • \n
  • 数组索引始终显示在括号中而不是在句点之间。

  • \n
\n\n

小提琴样本。

\n\n

(老实说,原始文章有些模糊,并且允许在实现上进行变化。例如,使用底层脚本引擎的脚本表达式到底意味着什么?)

\n