2016-06-17 3 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.)]:

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

Я сделал это здесь: http://jsonpath.com/

Так что, если предположим, что я хочу знать, если есть любое значение в поле числа внутри номера звонящего или если оно пустое, то какой должен быть мой jsonpath? Я пробовал разные вещи, но не мог понять.

Спасибо!

+0

Нет ответов. :( –

ответ

4

Вы можете использовать такое-фильтр ?(@.<field>) как так

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

Это даст вам все номера с любым ненулевым значением являются, т.е.

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

будет возвращать только первый результат

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

независимо от того, полностью ли поле number, null или пустую строку "".

Я узнал об этом от некоторых JPath-Unit-тесты Newtonsoft.Json, в ср .: JPathExecutTests.ExistsQuery()

Смежные вопросы