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

时间:2017-05-08 18:45:04

标签: json json.net jsonpath

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

{
    "a": [
        {
            "id": 1
        }
    ],
    "b": [
        {
            "id": 2
        },
        {
            "id": 3,
            "c": {
                "id": 4
            }
        }
    ],
    "d": [
        {
            "id": 5
        }
    ]
}

我只希望ab内的所有顶级对象的ID,而不是内部对象的ID。使用goessner的解析器,我可以使用:$.[a,b].*.id,它返回[1, 2, 3]

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

1 个答案:

答案 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

(老实说,原始文章有些模糊,允许实现变化。例如,脚本表达式,使用底层脚本引擎究竟是什么意思?)