2016-05-01 10 views
1

私はJson.NETを使用しています。以下のJSONの場合:最初のものは任意のトークンを見つけることができませんが、2番目の1が行う何らかの理由でJSONパス式「*」が結果を得ない理由(Json.NET)

var notFound = token.SelectTokens("*"); 
var found = token.SelectTokens("[*]"); 

var token = JToken.Parse("[\"v\"]"); 

私は2つの式を実行します。私はthisオンラインツールを使用して動作を確認しましたが、"*"はこの場合は"[*]"と同じように動作するはずです。

Json.NETは、.NETで最も一般的で広く使われているフレームワークです。だから私はそこにいると思いますです。

答えて

0

お試しください/*

JSONPathがXPathをモデル化すると仮定した場合、ルートに対して相対的なものを指定する必要があります。上記のコードを「ルートオブジェクトの下の任意のタイプの要素」と解釈します。つまり配列の下の文字列を見つけるでしょう。

+0

ルートJSONパスで '$'です。したがって、私は '$。*'がルートの下にあるすべての子と一致することを期待します。しかし、それはしません。 '$ *'もそうではありません。しかし、 '$ [*]'は再び動作します:/ –

0

正規表現ではなく、Jsonパスです。 だから、docs

$..* 

からそれがさらにトークンを見つけることを試みる - 2の代わりに1(配列とその要素)の

+0

'$ .. *'はJSON構造体*のすべてのメンバーを返します。 –

関連する問題