【问题标题】:GSON Parse string returns null?GSON Parse 字符串返回 null?
【发布时间】:2013-05-11 04:25:23
【问题描述】:

由于某种原因,我在 GSON 解析来自 JSON_STRING 的数据时遇到问题。当我尝试解析时,我返回 null。你能帮我写下下面的代码,让我知道我哪里出错了吗?我的目标是最终从 url 解析 JSON 提要,但我想对字符串进行硬编码以进行测试。

import com.google.gson.Gson;

public class ReadJson {

    public static void main(String... args) throws Exception {

        String JSON_STRING = 
            "{\"data\":[{\"NAME\":\"Brandy\",\"LOCATION\":\"Redding, CA\"},
                        {\"NAME\":\"Jacob\",\"LOCATION\":\"Redding, CA\"},
                        {\"NAME\":\"Tatiana\",\"LOCATION\":\"Wonderland\"},
                        {\"NAME\":\"Tedo\",\"LOCATION\":\"Cottonwood\"}]}";
        DataJSON data2 = new Gson().fromJson(JSON_STRING, DataJSON.class);
        System.out.println(data2);

    }
}

class DataJSON {
    public String NAME;
    public String LOCATION;
    public String getName() { return NAME; }
    public String getLocation() { return LOCATION;}
    public void setName(String NAME) { this.NAME = NAME; }
    public void setLoction(String LOCATION) { this.LOCATION = LOCATION; }
    public String toString() {
        return String.format("NAME:%s,LOCATION:%s", NAME, LOCATION);
    }
}

【问题讨论】:

  • 我猜你不能直接打印出data2。您是否调试过项目并查看过 data2 的值?
  • 看来他在DataJSON类中覆盖了toString()!!!
  • 是的,您应该将@Override 放在 toString 的顶部。
  • 我是在 Stackoverflow 上发布问题的新手。我的问题是-1,我能做些什么来问一个更合适的庄园?

标签: java json parsing


【解决方案1】:

您的 JSON 是一个具有单个字段 (data) 的对象,其中包含一组对象。您有一个代表数组中对象的类 (DataJSON)

Gson 将反序列化到的 POJO 需要是:

class MyData {
    List<DataJSON> data;
}

如果你这样做:

MyData md = gson.fromJson(JSON_STRING, MyData.class);

它会正确反序列化。

【讨论】:

    【解决方案2】:

    您的 json 中有一个列表,因此您需要将 DataJSON 包装在一个列表中。像这样。

    class DataJSONWrapper {
        public List<DataJSON> list = new ArrayList<DataJSON>();
        //getters & setters
    }
    

    【讨论】:

    • 我不是投反对票的人,但请为提问者的情况提供类(至少是属性)。
    • 这是课程。它使用了提问者提供的类。
    • 对不起,我不熟悉这个主题。
    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 2021-06-29
    • 2013-08-16
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多