给出一个像这样的json列表:
{
"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?
这会让你到达那里,但前提是你删除了JSON中@scriptId前面的@符号。
$..['platformCore:customField'][?(@['scriptId'] == 'custentity_bar_number')]
所以我需要的是一种逃避json中@符号的方法,并做出类似的工作:
$..['platformCore:customField'][?(@['@scriptId'] == 'custentity_bar_number')]
我正在使用http://jsonpath.com/来尝试完成这项工作。
答案 0 :(得分:1)
您显然需要使用十六进制代码(我认为它与表达式的解析方式有关)
$..['platformCore:customField'][?(@['\x40scriptId'] == 'custentity_bar_number')]
答案 1 :(得分:1)
使用十六进制代码转义@ simbol对我不起作用。 这是我尝试过的样本。
这是json示例:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"@address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}
}
这些是我尝试过的jsonpath:
$.'\x40address'[*]
$."\x40address"[*]
是我可以尝试使用的简单在线工具
关于我可能错过的事情,您有什么建议吗?