java - 使用 Gson 反序列化 json 不起作用

标签 java android json gson

类包含所有歌曲

public class Songs{
    private List levels;

    public List getLevels() {
        return levels;
    }

    public void setLevels(List levels) {
        this.levels = levels;
    }
}

每首歌曲对象

public class Levels{
    private Number id;
    private String name;
    private List sequence;

    public Number getId(){
        return this.id;
    }
    public void setId(Number id){
        this.id = id;
    }
    public String getName(){
        return this.name;
    }
    public void setName(String name){
        this.name = name;
    }
    public List getSequence() {
        return sequence;
    }
    public void setSequence(List sequence) {
        this.sequence = sequence;
    }
}

JSON

{
    "levels": [
        {
            "id": 1,
            "name": "Sequence",
            "sequence": [
                17,
                1,
                2
            ]
        },
        {
            "id": 2,
            "name": "Sequence",
            "sequence": [
                17,
                0,
                1,
                2,
                4,
                4,
                5,
                6
            ]
        }
    ]
}

Java代码

如果我调试,我可以看到对象,但问题是获取 int 数组的序列,这是可行的。谁能帮我 ???如果我这样做,我可以粘贴堆栈跟踪 list2.getLevels().get(0).getSequence();

String json = new String(b);
Gson gson = new Gson();
Songs list2 = (Songs) gson.fromJson(json, Songs.class);

//I CAN READ ONE LEVEL LIKE THIS 
LinkedTreeMap<String,Levels> l = (LinkedTreeMap)songs.getLevels().get(0);


//HOW CAN I GET SEQUENCE ARRAY???

最佳答案

关卡.java

import java.util.List;


public class Levels {
    private Number id;
    private String name;
    private List sequence;

    public Number getId(){
        return this.id;
    }
    public void setId(Number id){
        this.id = id;
    }
    public String getName(){
        return this.name;
    }
    public void setName(String name){
        this.name = name;
    }
    public List getSequence() {
        return sequence;
    }
    public void setSequence(List sequence) {
        this.sequence = sequence;
    }
}

歌曲.java

import java.util.List;

    public class Songs{
    private List<Levels> levels;

    public List<Levels> getLevels() {
        return levels;
    }

    public void setLevels(List<Levels> levels) {
        this.levels = levels;
    }

}

并使用它来获取序列列表:

String json = new String("{\n    \"levels\": [\n        {\n            \"id\": 1,\n            \"name\": \"Sequence\",\n            \"sequence\": [\n                17,\n                1,\n                2\n            ]\n        },\n        {\n            \"id\": 2,\n            \"name\": \"Sequence\",\n            \"sequence\": [\n                17,\n                0,\n                1,\n                2,\n                4,\n                4,\n                5,\n                6\n            ]\n        }\n    ]\n}");

Gson g = new Gson();
Songs vc = (Songs)g.fromJson(json, Songs.class);
List test = vc.getLevels().get(0).getSequence();

关于java - 使用 Gson 反序列化 json 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22782315/

相关文章:

java - 错误 : Failed to resolve: com. google.firebase :firebase-core:18. 1.0 在项目结构对话框中显示受影响的模块:app

将 C 变量转换为 JSON 格式

java - 如何解析 Yahoo BOSS API 响应

java - Android [string array] 无法解析或不是字段

java - 如何在客户端*无需*安装 Java3D 等插件的情况下在网页上编写 Java 3D 元素

java - 如何在 Java 中加载已安装的网络摄像头名称

java - 检索 Activity 实例的 ActivityInfo

android - 在使用 RoboSpice 执行网络请求之前从缓存中获取数据

java - GSON反序列化字符串或字符串数​​组

java - 无法更新 MySQL 中的数据库记录