gpt4 book ai didi

java - 使用 JSON-B 反序列化 JSON 数组

转载 作者:行者123 更新时间:2023-11-30 12:03:46 24 4
gpt4 key购买 nike

我正在尝试使用 JSONB 反序列化 JSON 数组。

JSON

[
{
"id": "1",
"animal": "dog",
"age": "3"
},
{
"id": "2",
"animal": "cat",
"age": "5"
}
]

Controller

Jsonb jsonb = JsonbBuilder.create();    
Animal animal;
AnimalsList animalsList;

public AnimalsList getAnimals() {
try {
animalsList = jsonb.fromJson("[{\"id\":\"1\",\"animal\":\"dog\",\"age\":\"3\"},{\"id\":\"2\",\"animal\":\"cat\",\"age\":\"5\"}]", AnimalsList.class);
} catch (JSONException ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
}
return animalsList;
}

动物列表

public class AnimalsList implements Serializable{

private List<Animal> list;

public AnimalsList() {
}

public AnimalsList(List<Animal> list) {
this.list = list;
}

// getter & setter
}

动物

public class Animal implements Serializable{

private int id;
private String animal;
private int age;

public Animal() {
}

public Animal(int id, String animal, int age) {
this.id = id;
this.animal = animal;
this.age = age;
}

// getter & setter
}

但是我得到以下错误:

javax.json.bind.JsonbException: Can't deserialize JSON array into: class com.model.AnimalsList

最佳答案

Arnaud 的评论中所写, 这个guide显示解决方案:

List<Dog> dogs = new ArrayList<>();
dogs.add(falco);
dogs.add(cassidy);

// Create Jsonb and serialize
Jsonb jsonb = JsonbBuilder.create();
String result = jsonb.toJson(dogs);

// Deserialize back
dogs = jsonb.fromJson(result, new ArrayList<Dog>(){}.getClass().getGenericSuperclass());

关于java - 使用 JSON-B 反序列化 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57462695/

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