我很难找到一种方法将这个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中的人员列表,但它不存在。
答案 0 :(得分:0)
在数组内部,数组旁边的对象似乎并不敏感。以这种方式放置是有意义的:
{
"topic": "this is my topic",
"listOfPersons" : [
{
"name": "John",
"age": 100
},
{
... another person
}
]
}
然后你可以有一个Person
类:
public class Person {
private String name;
private int age;
}
...您可以使用已有的代码进行反序列化。
答案 1 :(得分:0)
这里的问题是你的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));