GSON Parse字符串返回null?

时间:2013-05-11 04:25:24

标签: java json parsing

出于某种原因,我遇到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);
    }
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您的JSON是一个包含一个对象数组的单个字段(data)的对象。您有一个表示数组DataJSON

中的对象的类

Gson将反序列化的POJO需要:

class MyData {
    List<DataJSON> data;
}

如果你这样做:

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

它会正确反序列化。