我的模型看起来像这样:
public class DefaultModel<T> {
public int Status;
public T JSON;
public String ErrorMessage;
public String InfoMessage;
}
json字体样式
{"ErrorMessage":"null","InfoMessage":"null","JSON":
[{"DictId":"1","ItemCode":"1","ItemName":"sINGLE","SortNum":0,"
isChecked":true},{"ItemName":"WenJackp","SortNum":0,"isChecked":false}]
,"Status":100}
我想解析这个json,但gson抛出异常
com.google.gson.internal.LinkedTreeMap无法转换为 xxxxx.DictItem
如何解析?
添加更多细节,我使用此方法解析json数据:
创建ParameterizedType,您会看到buildType方法
ParameterizedType mType = buildType(DefaultModel.class, ArrayList.class, DictItem.class);
解析json数据
DefaultModel<List<DictItem>> mResult = mGson.fromJson(json, mType);
创建新的ParameterizedType
protected ParameterizedType buildType(final Class raw, final Type... args) {
return new ParameterizedType() {
public Type getRawType() {
return raw;
}
public Type[] getActualTypeArguments() {
return args;
}
public Type getOwnerType() {
return null;
}
};
}
以上是当我处理使用的JSON解析方法时,我想使用Default<List<DictItem>>
这种类型,T == List<DictItem>
答案 0 :(得分:1)
对于'T'类型,请使用
List<InnerClass> json;
然后,您可以将内部类放入具有
的DefaultModel中String dictId;
String itemCode;
String itemName;
String sortNum;
boolean isChecked;
另一方面,这些变量应标记为私有,并通过getter访问。 如果您希望使用@SerializedName
注释它们,也可以使用不同的变量名例如
@SerializedName("ErrorMessage")
private String myErrowMsg;