java - 使用 JSON-B 反序列化 JSON 数组
问题描述
我正在尝试使用 JSONB 反序列化 JSON 数组。
JSON
[
{
"id": "1",
"animal": "dog",
"age": "3"
},
{
"id": "2",
"animal": "cat",
"age": "5"
}
]
控制器
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
解决方案
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());
推荐阅读
- python - TypeError: unhashable type: 'list' 同时改变字典值
- sql - VB.NET 更新 Access db 交换参数
- c# - 从 .NET 4.7.2 文件引用 .NET Core 类
- android - 如何将数据从片段传递到其视图
- php - create_function 已被弃用 - 我更新的代码是否正确?
- apache-flink - 向kafka发送数据失败
- dart - 在 Dart 中使用重载 == 运算符检查 null?
- java - 在spring jpa中执行Hibernate.initialize()时出现并发修改异常
- javascript - 如何将 html div 的值分配给 php 变量
- android - 使用 ionic-v3 和 cordova 6.3.0 警告 Android API 级别 28