2017-05-08 72 views
1

我试图用Json.NET选择一些节点SelectTokens它似乎不支持original jsonpath支持的相同语法。鉴于此输入:Json.NET使用的JsonPath语法是什么?

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

我想里面ab仅但不是,内对象的所有顶级对象的ID。使用goessner的解析器我能够做到这一点:$.[a,b].*.id,它返回[1, 2, 3]

Json.NET似乎不支持逗号或*。 Json.NET如何实现这一点,并且Json.NET jpath选择器支持哪些内容?

回答

3

以下路径将与Json.NET 10.0.2工作:

var path = @"$.['a','b'][*].id"; 

这条道路似乎与original JsonPATH article,其中规定是一致的:

JSONPath表达式可以使用点符号

$.store.book[0].title

或方括号

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

具体来说:

  • 名称括号内被示出为被引用。大概这样做会区分索引和数字名称。

  • 数组下标始终显示为括号内,而不是句点间。

样品fiddle

(说实话,原来的文章是有点模糊,并允许在执行差异。比如,到底是什么呢脚本表达,使用底层脚本引擎是什么意思?)