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