-1

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

2 回答 2

0

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

class DataJSONWrapper {
    public List<DataJSON> list = new ArrayList<DataJSON>();
    //getters & setters
}
于 2013-05-11T04:46:08.887 回答
0

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

Gson 将反序列化为的 POJO 必须是:

class MyData {
    List<DataJSON> data;
}

如果你这样做:

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

它将正确反序列化。

于 2013-05-11T04:49:47.667 回答