Jayway JsonPath查询以获取所需的json格式

问题描述 投票:0回答:1

我需要从输入的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”可以被硬编码。

java jsonpath
1个回答
0
投票

我想我设法解决了这个问题:)

$.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,那就很好。因此需要进一步增强。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.