【发布时间】:2013-03-12 18:25:48
【问题描述】:
我正在解析具有类似于以下响应模板的数据:
{
response: {
data: {}
}
meta: {
errors: []
success: 1
}
}
对于每个特定响应,“数据”字段都填充有动态字段,但所有其他键(元等)保持不变。例如:
A类
data: {
foo: ""
}
B类
data: {
bar: 3
}
如何为我的类建模并使用 Gson 来表示这些数据?目前我有:
public class BaseResponse {
@SerializedName("meta") public Meta meta;
public class Meta {
@SerializedName("errors") public ArrayList<Error> errors;
@SerializedName("success") public int success;
}
}
public class ClassA extends BaseResponse {
@SerializedName("foo") public String foo;
}
public class ClassB extends BaseResponse {
@SerializedName("bar") public int bar;
}
不幸的是,foo 和 bar 字段在解析时返回 null 值,使用例如:
Gson.fromJson(jsonString, ClassA.class);
我相信这是由于“foo”和“bar”字段是内部引用。
【问题讨论】:
-
我对gson不太了解,但是当你说解析返回null时,你调用
Gson.fromJson(jsonString, ClassA.class);时jsonString的值是多少? -
对于 ClassA 响应,它看起来像 { response: { data: {foo: "Foo!"} } meta: { errors: [] success: 1 } }
-
对于 B 类响应,它看起来像 { response: { data: {bar: 350} } meta: { errors: [] success: 1 } }
-
这些 json 是您自己创建的还是由
gson.toJson(a,ClassA.class)或类似的东西创建的? -
因为我认为您的 json 注释并不代表您提供的 json。所以你需要修改你的类。我认为你可能需要在你的
BaseResponse一个private ClassA a或类似的东西。今晚我会试着给你一个更好的答案。