【问题标题】:parse json data with gson on android在android上用gson解析json数据
【发布时间】:2015-11-04 02:56:44
【问题描述】:

我的模型如下所示:

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);
    
  • 创建新的参数化类型

    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&lt;List&lt;DictItem&gt;&gt;这个类型,T == List&lt;DictItem&gt;

【问题讨论】:

标签: android gson


【解决方案1】:

对于类型“T”使用

List<InnerClass> json;

然后你可以将一个内部类放入你的 DefaultModel 中

String dictId;
String itemCode;
String itemName;
String sortNum;
boolean isChecked;

附带说明,这些变量应标记为私有并通过 getter 访问。 如果你愿意,你也可以有不同的变量名,用@SerializedName注解它们

例如

@SerializedName("ErrorMessage")
private String myErrowMsg;

【讨论】:

  • 谢谢你回答我的问题!你可能不知道我对问题的描述,后来我添加了更多的问题描述
猜你喜欢
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多