用android上的gson解析json数据

时间:2015-11-04 02:56:45

标签: android gson

我的模型看起来像这样:

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>

1 个答案:

答案 0 :(得分:1)

对于'T'类型,请使用

List<InnerClass> json;

然后,您可以将内部类放入具有

的DefaultModel中
String dictId;
String itemCode;
String itemName;
String sortNum;
boolean isChecked;

另一方面,这些变量应标记为私有,并通过getter访问。 如果您希望使用@SerializedName

注释它们,也可以使用不同的变量名

例如

@SerializedName("ErrorMessage")
private String myErrowMsg;