我需要从输入的json中提取所需格式的json。我正在使用jayway json路径库。如何实现?
Input 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”,“来源”:{“ sname”:“ XA-SXXD”,“ lname”:“ John”,“标识符”:2}},{“ id”:“ 14”,“来源”:{“ sname”:“ XB-SXXD”,“ lname”:“ Cena”,“标识符”: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,那就很好。因此需要进一步增强。
希望这会有所帮助。