gpt4 book ai didi

java - Jackson:将 JSON 数组从 JSON 对象反序列化为 Java 列表

转载 作者:行者123 更新时间:2023-12-02 01:17:07 25 4
gpt4 key购买 nike

我已经被这个问题迷惑了一段时间了。我有一个 Spring 应用程序,想要解析以下 JSON:

{
"metadata": {...}
"response": {
"objects": [
{
"name": "someName",
"properties": [<array_of_properties>]
},
...
]
}
}

进入以下 Java 对象的列表:

public class MyClass {
String name;
List<CustomProperties> customProperties;
}

意思是,我只想提取objects数组并仅解析它。我尝试过使用自定义反序列化器并且有效,但我必须这样做:

@JsonDeserialize(using=MyDeserializer.class)
public class MyClassList extends ArrayList<MyClass>{}

然后:

ObjectMapper objectMapper = new ObjectMapper();
List<MyClass> list = objectMapper.readValue(json, MyClassList.class)

无论如何都要避免扩展ArrayList,因为目前我这样做是为了能够访问.class属性。

最佳答案

您可以使用几个类定义 json 结构

public class MyJson {
private MyResponse response;
...
}

public class MyResponse {
private List<MyClass> objects;
...
}

public class MyClass {
String name;
List<CustomProperty> customProperties;
...
}

您可以使用 Jackson 将 json 字符串解析为 MyJson 类,不需要特殊的 @JsonDeserialize

ObjectMapper objectMapper = new ObjectMapper();
MyJson myJson = objectMapper.readValue(json, MyJson.class);
List<MyClass> list = myJson.getResponse().getObjects();

请记住,此代码只是一个草稿,所有类都应该有 setter(和 getter),并且需要一些 null 检查

关于java - Jackson:将 JSON 数组从 JSON 对象反序列化为 Java 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58378069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com