繁体   English   中英

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

[英]Jayway JsonPath query to get required json format

我需要从输入 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,则没问题。 所以还需要加强一点。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM