2
化JSON类属性名
我有以下JSON:如何识别使用GSON
{
"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 2014-10-30 15:02:49
user489041,你能更精确地写答案吗? – Anton 2014-10-30 15:19:01
下面是使用TypeAdapter的SO上的类似答案:http://stackoverflow.com/a/6018852/2543138 – brwngrldev 2014-10-30 16:22:58