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

标签 java jsonpath

我需要从输入 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/

相关文章:

json - 使用 JSONPath 按名称过滤 json 属性

c# - Json.Net SelectToken 查询不起作用

javascript - JSONPath 作为单独的 JSON 排除

java - 在哪里放置括号以简洁地将转换对象转换为原始类型而不自动拆箱?

JavaBean 'value for the useBean class attribute classes.UserData is invalid'

java - ArrayList add(index, object) 与 add(object) 复杂性

json - 如何从 JsonNode 获取键值映射?

java - 使用 Jsonpath 获取列表

java - 如何使用 hibernate 处理运行时创建的表?

java - 生产者-消费者程序中的线程优先级 - wait() & notify()