我正在尝试使用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;
}
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
如果不只限于使用JSON-B,可以通过TypeReferencing使用ObjectMapper进行。
private ObjectMapper objectMapper = new ObjectMapper();
List<Animal> animals = objectMapper.readValue(json , new TypeReference<List<Animal>>(){});