java - 深入 JSON 结构到 Java 对象,有没有比我更好的方法?看起来很可怕

标签 java json gson pojo

所以我得到了这个 JSON 结构作为 HTTP 响应。结构如下所示:

{
    "field1": "value1",
    "field2": {
        "field2-2": [
            {
                "field2-2-1": "some value",
                "field2-2-2": {
                    "key" : "some value"
                }
            }
        ]
    }
}

当然,我简化了它,但你明白了。现在我使用Gson将其转换为HashMap:

HashMap<String, Object> resultMap = new Gson().fromJson(httpResult, type);

现在,要访问 Java 中的“field2-2-2”,我这样做:

LinkedTreeMap someMap = (LinkedTreeMap) resultMap.get("field2");
ArrayList<LinkedTreeMap> someList = (ArrayList) someMap.get("field2-2");
LinkedTreeMap anotherMap = someList.get(0);
anotherMap.get("key");

我再次简化了它,但是有没有更好的方法来访问这个“深层”领域?或者为了可读性,我可以以某种方式链接方法吗?我的意思是,如果这一切都是 ArrayList,我可以做类似的事情:

ArrayList<Arraylist<String>> sampleList = new ArrayList<>();
sampleList.get(0).get(0);

最佳答案

您可以直接将其映射到 POJO 类。喜欢:

@JsonInclude(Include.NON_NULL)
public class ApiResponse {

    String field01;
    Field2Class field02;

}

Field2Class.class

public class Field2Class {

   ArrayList<Field02_2> field02_2;

}

Field02_2.class

public class Field02_2 {

   String field02_2_1, field02_2_2;

}

每个类都有 getter、setter 和默认构造函数。

关于java - 深入 JSON 结构到 Java 对象,有没有比我更好的方法?看起来很可怕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59066154/

相关文章:

java - org.apache.bcel.verifier.exc.AssertionViolatedException.main(AssertionViolatedException.java :102) error with Selenium and Java

java - 如何在 Spring Boot 中为 Camel 配置 Jackson ObjectMapper

java - findElements() 返回 NoSuchElementException 而不是返回空列表

java - JSONObject.append 到对象 - 结果是嵌套数组?

android - gson.fromJson - 反序列化失败

java - gson json 解析器 : value without key

java - 优化 GC 运行时间

android - 文件 google-services.json 丢失。没有 ionic 3,Google 服务插件将无法运行

c# - Newtonsoft JSON - 数组未正确序列化

java - 在 Spring 中消耗大量 json 有效负载的最佳方法?