gpt4 book ai didi

java - 如何创建适当的 POJO 来提供 JSON 响应?

转载 作者:行者123 更新时间:2023-12-02 08:56:30 24 4
gpt4 key购买 nike

社区!我从某些 API 收到以下 JSON 响应:

[
[
[
{
"key": [
"1",
"test1"
],
"value": 1582890257944
},
{
"key": [
"2",
"test2"
],
"value": 1582888081654
},
{
"key": [
"3",
"test3"
],
"value": 1582884771691
}
]
]
]

我应该创建类来将此 JSON 映射到 Java 类之前我得到了以下 JSON:

[
{
"key": [
"test1"
],
"value": 1
},
{
"key": [
"test2"
],
"value": 2
}
]

对于这个 JSON,我创建了一个简单的类:

public class SomeClass {

private List<String> key;
private int value;
}

jackson 正确地绘制了它,没有任何问题......

请帮助我,我需要什么样的类(class)结构?我尝试写这样的东西:

        List<String> params = new ArrayList<>();
params.add("1");
params.add("test1");

SomeClass someClass = new SomeClass();
someClass.setKey(params);
someClass.setValue(1L);

List<SomeClass> arrays = new ArrayList<>();
arrays.add(someClass);
arrays.add(someClass);

List<List<SomeClass>> arrayLists = new ArrayList<>();
arrayLists.add(arrays);

List<List<List<SomeClass>>> threeLists = new ArrayList<>();
threeLists.add(arrayLists);

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String prettyJson = gson.toJson(threeLists);

System.out.println(prettyJson);

并得到了与我从响应中得到的相同的 JSON...我应该创建具有下一个结构的类吗?

List<List<List<String>>> key;
long value;

但我从 jackson 那里得到了错误:

线程“main”com.fasterxml.jackson.databind.exc.MismatchedInputException 中出现异常:无法从 START_ARRAY token 中反序列化 main.entity.SomeClass 的实例 在[来源:(StringReader);行:2,列:5](通过引用链:java.lang.Object[][0])

最佳答案

使用List<List<List<String>>> key将不起作用,因为 Json 结构是 List<List<List<SomeClass>>>正如您在示例代码中所具有的那样。

您可以使用 jackson TypeReference要反序列化的类。使用 jackson-databind 的示例代码。

public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
String json = "[[[{\"key\":[\"1\",\"test1\"],\"value\":1},{\"key\":[\"1\",\"test1\"],\"value\":1}]]]";
TypeReference<List<List<List<SomeClass>>>> typeRef = new TypeReference<List<List<List<SomeClass>>>>() {
};
try {
List<List<List<SomeClass>>> someClassList = mapper.readValue(json, typeRef);
System.out.println(someClassList);
} catch (Exception ex) {
ex.printStackTrace();
}
}

关于java - 如何创建适当的 POJO 来提供 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60456529/

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