【问题标题】:Java get nested value from ResponseEntity without creating a pojoJava 在不创建 pojo 的情况下从 ResponseEntity 获取嵌套值
【发布时间】:2022-12-30 09:02:51
【问题描述】:

我正在尝试从 ResponseEntity 获取单个嵌套值,但我正在尝试这样做而不必为每个可能的项目创建一个 pojo,因为这是第三方 api 响应。

示例 response.getBody() 作为 JSON:

{
    "message": "2 records found",
    "records": [
        {
            "Account": {
                "Id": "1",
                "Name": "Foo Inc"
            },
            "CaseNumber": "200",
            "Contact": {
            "FirstName": "Foo",
            "LastName": "Bar"
            },
            "Status": "In Progress",
            "StatusMessage": "We are working on this."
        },
        {
            "Account": {
                 "Id": "1",
                 "Name": "Foo Inc"
            },
            "CaseNumber": "100",
            "Contact": {
                "FirstName": "Foo",
                "LastName": "Bar"
            },
            "Status": "Closed"
        }

    ]
}

基本上,如果我在 JS,我正在寻找:

for(let record of res.body.records){
   if(record && record.CaseNumber === "200"){
      console.log(record.Status)
}
res.body.records[0].Status

目前,他们这样做是为了检查响应是否为空:

LinkedHashMap<Object, Object> resMap = (LinkedHashMap<Object, Object>) response.getBody();
        
List<Object> recordsList = (List<Object>) resMap.get("records");

if (recordsList.size() <= 0) { return error }

但是我需要获得“状态”的价值,并且我需要在不创建 pojo 的情况下这样做。

我感谢有关如何在 Java 中执行此操作的任何指导

【问题讨论】:

    标签: java parsing response-entity


    【解决方案1】:

    使用 JSON 解析器解析正文。如果不想创建 POJO,只需使用泛型类即可。下面是一个将 Genson 与 Java 集合结合使用的示例。到达那里后,只需浏览集合并执行必要的操作:

    http://genson.io/GettingStarted/#java-collections

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2017-12-28
      • 2016-03-13
      • 2012-06-25
      相关资源
      最近更新 更多