java - 如何从 JSON 字符串中获取数据?

标签 java json parsing gson

我有一个像这样的 JSON 字符串:

{
    "response":[2,
        {
            "id":"187",
            "name":"John",
            "surname":"Corner"
        },
        {
            "id":"254",
            "name":"Bob",
            "surname":"Marley"
        }
    ]
}

如何使用 Java 中的 GSON lib 解析它? 我尝试过:

static class SearchRequest {
    private Names[] response;

    static class Names {
        private int id;
        private String name;
        private String surname;
    }
}

但它不起作用:(

最佳答案

response 数组不仅包含Names,还包含一个整数值:response[0]=2。 所以你必须使用类似的东西

private Object[] response;

添加: 我认为,您无需更改 JSON,因为您的 response 是私有(private)的,因此您应该使用 getter:

static class SearchRequest {
    private Object[] response;

    static class Names {
        private int id;
        private String name;
        private String surname;
    }

    public List<Names> getNames() {
        List list = new ArrayList();
        list.addAll(Arrays.asList(response));
        return (List<Names>) list.subList(1, response.length);
    }

    public int getAmount() {
        return (Integer) response[0];
    }

    public void setNames(List<Names> names) {
        response = new Object[names.size() + 1];
        response[0] = names.size();
        for (int i = 0, namesSize = names.size(); i < namesSize; i++) {
            response[i + 1] = names.get(i);
        }
    }
}

关于java - 如何从 JSON 字符串中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9347741/

相关文章:

python - 在python中解析字符串

java - Gurobi 无法添加约束

java - SceneBuilder 坐标与 JavaFX 坐标

java - 使用java从大文件中读取 block

python - URL 在 Python 中编码一个非值对

c++ - 使用 POCO JSON 进行增量解析

ruby - 是否有用于解析营业时间的 RubyGem?

java - 尝试运行 MRUnit 示例时出现冲突的 API

javascript - 我如何从这个 Jsonarray 中删除 T 和 Z

javascript - Esprima 解析器工作示例