2016-05-13 5 views
7

Учитывая список JSon так:Как избежать символа @ в jsonpath?

{  
"listRel:customFieldList": { 
      "platformCore:customField": [ 
       { 
       "@internalId": "801", 
       "scriptId": "custentity_admin_contact_cweb", 
       "@xsi:type": "platformCore:BooleanCustomFieldRef", 
       "platformCore:value": "false" 
       }, 
       { 
       "@internalId": "712", 
       "@scriptId": "custentity_bar_number", 
       "@xsi:type": "platformCore:StringCustomFieldRef", 
       "platformCore:value": "166493" 
       }, 
       { 
       "@internalId": "798", 
       "@scriptId": "custentity_contact_type", 
       "@xsi:type": "platformCore:SelectCustomFieldRef", 
       "platformCore:value": { 
        "@internalId": "1", 
        "@typeId": "148", 
        "platformCore:name": "Attorney" 
       } 
       } 
       ] 
} 
} 

Как я могу выбрать значение «custentity_bar_number»? 166493?

Это приведет вас сюда, но только если вы удалите символ @ перед @scriptId в JSON.

$..['platformCore:customField'][?(@['scriptId'] == 'custentity_bar_number')] 

Так что мне нужно, это способ избежать символа @ в формате JSON, и сделать что-то вроде этой работы:

$..['platformCore:customField'][?(@['@scriptId'] == 'custentity_bar_number')] 

Я использую http://jsonpath.com/, чтобы попытаться сделать эту работу.

ответ

1

Вы, видимо, нужно использовать шестнадцатеричный код (я думаю, что это что-то делать с тем, как выражение разбираемый)

$..['platformCore:customField'][?(@['\x40scriptId'] == 'custentity_bar_number')] 
+0

Wow! отличная работа! Я понятия не имел, что вы можете вставлять такие коды, это не в полуофициальной документации http://goessner.net/articles/JsonPath/index.html#e2 – redwards510