我正在嘗試使用 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
2 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
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());

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
如果您不限于僅使用 JSON-B,則可以通過 TypeReferencing 使用 ObjectMapper 來完成。
private ObjectMapper objectMapper = new ObjectMapper();
List<Animal> animals = objectMapper.readValue(json , new TypeReference<List<Animal>>(){});
添加回答
舉報
0/150
提交
取消