[英]GSON How to deserialize to a class with this array json string
我正在努力尋找一種方法來將此JSON輸出序列化/反序列化為Java類? 誰能提供代碼示例?
[
{
"topic": "this is my topic"
},
[
{
"name": "John"
},
{
"age": 100
}
]
]
我當前的嘗試使用此Javabean:
public class Test {
private String topic;
private List<Person> listOfPersons;
}
我嘗試將數據反序列化為使用Gson:
gson.fromJson(this.json, Test[].class);
但是反序列化失敗了,因為Gson在JSON中查找人員列表,但是它不存在。
似乎在數組內部的數組旁邊沒有對象是明智的。 這樣放置是很有意義的:
{
"topic": "this is my topic",
"listOfPersons" : [
{
"name": "John",
"age": 100
},
{
... another person
}
]
}
然后,您可以擁有一個Person
類:
public class Person {
private String name;
private int age;
}
...並且您可以反序列化您已有的代碼。
這里的問題是您的JSON數據在語法上是正確的,但在語義上卻模棱兩可。 我的意思是,它似乎代表了一個多態數組,其中數組中的每個項目都是不同的類型。
另外,代表“人”的部分似乎已被可怕地歸一化,其中人的每個屬性都表示為數組中的單獨對象。 確實很奇怪。 不幸的是,僅通過查看數據就無法確定代表什么類型,並且沒有提供任何提示讓Gson為您反序列化數據。 在這種情況下,您可以做的最好的事情就是手動解析信息。
Test test = new Test();
JsonArray rootArray = new JsonParser().parse(jsonString);
test.setTopic(rootArray.get(0).get("topic");
Person person = new Person();
JsonArray personArray = rootArray.get(1);
person.setName(personArray.get(0).get("name"));
person.setAge(personArray.get(1).get("age"));
test.setListOfPersons(Arrays.asList(person));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.