【发布时间】:2014-10-30 15:00:28
【问题描述】:
我有以下 json:
{
"list": [
{
"BaseClass": {
"id": 0
}
},
{
"ExtendedClass1": {
"id": 1,
"sum": 100
}
},
{
"ExtendedClass1_1": {
"id": 2,
"sum": 200,
"expr": "text"
}
},
{
"ExtendedClass2": {
"id": 3,
"total": 300
}
}
]
}
我还有以下声明继承的类:
MetaClass.java
import java.util.ArrayList;
import com.google.gson.Gson;
public class MetaClass{
public ArrayList<BaseClass> list = new ArrayList<BaseClass>();
public static void main(String[] args) {
String json = "{\"list\":[{\"BaseClass\":{\"id\":0}},{\"ExtendedClass1\":{\"id\":1,\"sum\":100}},{\"ExtendedClass1_1\":{\"id\":2,\"sum\":200,\"expr\":\"text\"}},{\"ExtendedClass2\":{\"id\":3,\"total\":300}}]}";
MetaClass gson = new Gson().fromJson(json, MetaClass.class);
}
}
BaseClass.java
public class BaseClass{
public int id;
public BaseClass() {
}
}
ExtendedClass1.java
public class ExtendedClass1 extends BaseClass{
public ExtendedClass1() {
}
public int sum;
}
ExtendedClass2.java
public class ExtendedClass2 extends BaseClass {
public ExtendedClass2() {
}
public int total;
}
ExtendedClass1_1.java
public class ExtendedClass1_1 extends ExtendedClass1 {
public ExtendedClass1_1() {
}
public String expr;
}
此外,可能有很多此类具有多级继承的类。我试图使这个例子更简单。如何正确解析提到的 json 字符串?请假设我无法更改输入 json,只有我可以更改类并以某种方式编写自定义 fromJson 命令...
编辑:当然,我可以在 BaseClass.java 中添加 json 中可能遇到的所有属性(见下文),但这似乎不是优雅的解决方案。
public ExtendedClass1 ExtendedClass1;
public ExtendedClass2 ExtendedClass2;
public ExtendedClass1_1 ExtendedClass1_1;
【问题讨论】:
-
别想了,看看 TypeAdaptors
-
user489041,你能更准确地写下答案吗?
-
以下是关于 SO 使用 TypeAdapters 的类似答案:stackoverflow.com/a/6018852/2543138