【发布时间】:2017-11-05 17:59:14
【问题描述】:
我开始使用 Gson 解析 json 数据。
杰森内容会像
{
“type”: “type1”,
“date”: “Tue, 16 May 2017 07:09:33 +0000”,
“body”:
{
“formatA_1”: “aaa”,
“formatA_2”: “bbbcccddd”
}
}
或
{
“type”: “type_2”,
“date”: “Tue, 16 May 2017 07:09:33 +0000”,
“body”:
{
“formatB_1”: “alpha”
}
}
目前将有8种不同的类型。主要的不同是“身体”部分。
“body”部分可以有不同的格式和不同的内容,即使是 arraylist 或 null 也是可能的。
所以我设计的数据类是
public class Data {
private String type;
private Long date;
private String body;
public String getType() {
return type;
}
public long getDate() {
return date;
}
public String getBody() {
return body;
}
}
首先我认为这取决于类型,后来我可以解析正文字符串,但得到了异常:
com.google.gson.JsonSyntaxException:
java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 10 path $.body
这是我用嵌套的 body 类修改 Data 类的唯一方法吗?
公共类数据{
private String type;
private Long date;
private Body body;
private class Body {
private String formatA_1;
private String formatA_2;
private String formatB_1;
//even for the list and other data members...
}
}
这个设计有点混乱,因为它包含了不同“类型”的所有成员(type1、type2、type3、...)。 我想成为基于不同“类型”的那个,我可以将主体解析为不同的对象(POJO 表示主体)。那可能吗?
我刚开始学习使用Gson,不知道如何做出更好的设计和解析。
非常感谢。
【问题讨论】:
-
它是 JSON(不是 Jason)。
-
非常感谢。拼写错误。