2017-05-08 16 views
1

私はJson.NETでいくつかのノードを選択しようとしていますSelectTokensそれはoriginal jsonpathと同じ構文をサポートしていないようです。私はaだけb内部ではなく、内側のオブジェクトのすべてのトップレベルのオブジェクトのidをしたいJson.NETで使用されるJsonPathの構文は何ですか?

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

:この入力が与えられました。 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

(正直なところ、元の記事はやや曖昧であると実装の変動が可能になります。例えば、スクリプト式を行いまさに、根本的なスクリプトエンジンを使用して意味?)

関連する問題