Android gson 反序列化成列表

Posted

技术标签:

【中文标题】Android gson 反序列化成列表【英文标题】:Android gson deserialization into list 【发布时间】:2011-12-19 00:55:09 【问题描述】:

我正在尝试将 json 字符串解析为列表或数组列表。我有以下 json 响应来自我为 android 项目创建的 WCF RESTful 服务

[
    
        "Class": "Lorem",
        "Company": "Ipsum",
        "Id": "XXXX",
        "Name": "Avent"
    ,
    
        "Class": "Consectetur",
        "Company": "Adipiscing",
        "Id": "YYYYY",
        "Name": "Nulla"
    
]

我在此处阅读了 几个 解析 gson 结果的示例,但我在执行容器类时遇到了困难,正如我所见。我已经将单个结果读入 Group 类,但无法将其解析为任何类型的 List 或 ArrayList。

组类:

public class Group 

    private String Id;
    private String Name;
    private String Class;
    private String Company;   

组容器类:

public class Groups 
    private List<Group> GRP;

gson 解析语句:

Groups GRP = gson.fromJson(jsonString, Groups.class);

我确实必须对 jsonString 进行一些操作,因为它在字符串中显示了一些空格(在逗号之后),并且在我删除它们之后它开始工作,至少用于解析为单个元素。不确定这是否会影响任何事情,但我想我会提到它。

我也试过了

类型 listType = new TypeToken>() .getType(); gson.toJson(myStrings, listType);

但这似乎也不起作用,我不知道这是否对我的情况有必要。

【问题讨论】:

【参考方案1】:
List<Group> groups = gson.fromJson(jsonString, new TypeToken<List<Group>>() .getType())

【讨论】:

我可以发誓我以前曾尝试过这种方式。我想我毕竟不需要容器类。最好构建一个列表或数组列表,看看我想如何在列表视图中显示其中一个字段?我的印象是我必须将该字段放入一个字符串 [] 以将其传递给列表视图适配器。 我想弄清楚如何在列表视图中显示“名称”字段

以上是关于Android gson 反序列化成列表的主要内容,如果未能解决你的问题,请参考以下文章

gson反序列化成data class时的坑

gson反序列化成data class时的坑

gson反序列化成data class时的坑

Gson关于抽象类的序列化与反序列化

Android开发中混淆后Gson序列化反序列化的那些坑

如何使用 GSON 或 Java 中的其他 JSON 库反序列化列表?