2016-06-17 6 views
2

フィールドに値があるかどうかを教えてくれるjsonpathを書く方法を理解するのが少し難しいと思っています。例えばJsonPath:フィールドにJsonPath経由で値があるかどうかを確認する方法は?

:このJSON考えてみましょう:

{ 
    "firstName": "John", 
    "lastName" : "doe", 
    "age"  : 26, 
    "address" : { 
    "streetAddress": "naist street", 
    "city"   : "Nara", 
    "postalCode" : "630-0192" 
    }, 
    "phoneNumbers": [ 
    { 
     "type" : "iPhone", 
     "number": "0123-4567-8888" 
    }, 
    { 
     "type" : "home", 
     "number": "0123-4567-8910" 
    } 
    ] 
} 

をそして私は書く場合:$ .phoneNumbers

それは私にこの結果を与える[?(@をtype.length> 0。)]:

http://jsonpath.com/

をだから私があるかどうかを知りたいと仮定した場合:私はここにこれをしなかった

'0' ... 
    'type' => "iPhone" 
    'number' => "0123-4567-8888" 
'1' ... 
    'type' => "home" 
    'number' => "0123-4567-8910" 

phonenumber内のnumberフィールドの任意の値、または空の場合は、私のjsonpathは何ですか?私は様々なことを試みましたが、それを理解できませんでした。

ありがとうございます!

+0

ありません答えはまだ、Newtonsoft.JsonのJPathユニット・テストの一部からこのことを学びました。 :( –

答えて

4

あなたは存在するフィルタ?(@.<field>)をそう

$.phoneNumbers[?(@.number)].number 

のようにこれはあなたにnull以外の値を持つすべての番号を与える使用することができ、すなわち

"phoneNumbers": [ 
{ 
    "type" : "iPhone", 
    "number": "0123-4567-8888" 
}, 
{ 
    "type" : "home", 
    "number": "" 
}] 

は最初の結果を返しますされている

'0' => "0123-4567-8888" 

number -fieldが完全に欠損しているかどうかにかかわらず、nullまたは空の文字列""

私はCF: JPathExecutTests.ExistsQuery()

関連する問題