我需要从输入 json 中提取所需格式的 json。我正在使用 jayway json 路径库。如何实现?
输入Json:
{
"ccid": [
{
"id": 13,
"src": {
"sname": "XA-SXXD",
"lname": "John",
"identifier": 2,
"StatusCode": "C"
}
},
{
"id": 14,
"src": {
"sname": "XB-SXXD",
"lname": "Cena",
"identifier": 3,
"StatusCode": "C",
}
}
]
}
所需格式:
[ { "id": "13", "sources": { "sname": "XA-SXXD", "lname": "John", "identifier": 2 } }, { "id": "14", "sources": { "sname": "XB-SXXD", "lname": "Cena", "identifier": 3 } }]
我使用的查询:
$.ccid[*].src[?(@.identifier!=null)].['identifier','sname']
我得到的输出:
[
{
"identifier" : 2,
"sname" : "XA-SXXD"
},
{
"identifier" : 3,
"sname" : "XB-SXXD"
}
]
请帮助我修改我的查询以获得所需的格式。所需格式的字符串“sources”可以被硬编码。
最佳答案
我想我已经解决了这个问题:)
$.ccid[*].[?(@.src.identifier!=null)].['id', 'src']
尝试一下。
输入测试:
{
"ccid": [
{
"id": 13,
"src": {
"sname": "XA-SXXD",
"lname": "John",
"StatusCode": "C"
}
},
{
"id": 14,
"src": {
"sname": "XB-SXXD",
"lname": "Cena",
"identifier": null,
"StatusCode": "C",
}
}
]
}
收到的输出:
[
{
"id" : 13,
"src" : {
"sname" : "XA-SXXD",
"lname" : "John",
"StatusCode" : "C"
}
}
]
唯一的问题是,如果标识符标记不可用,它本质上会被视为非空。因此我们得到 13 作为输出。但如果 value 明确为 null 那就没问题了。因此需要进一步增强。
希望这有帮助。
关于java - Jayway JsonPath查询获取所需的json格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60151618/