GSON解析字符串返回null?
由于某种原因,我在解析JSON_STRING
的数据时遇到GSON
问题。当我尝试解析时,我返回null。你能帮我解下面的代码,并让我知道我错了哪里?我的目标是最终解析来自url的JSON提要,但我想要为测试目的对字符串进行硬编码。GSON解析字符串返回null?
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);
}
}
你在你的json中有一个列表,所以你需要在列表中包装DataJSON。像这样的东西。
class DataJSONWrapper {
public List<DataJSON> list = new ArrayList<DataJSON>();
//getters & setters
}
我不是一个给予downvote的人,但请为提问者的情况提供这个类(至少是属性)。 – 2013-05-11 04:49:39
这是班级。它使用提问者提供的类。 – 2013-05-11 04:57:09
啊对不起,我不熟悉这个话题。 – 2013-05-11 05:10:27
你JSON是与包含对象的阵列中的单个字段(data
)的对象。您有代表数组内的对象类(DataJSON
)
你的POJO GSON将反序列化的需求是:
class MyData {
List<DataJSON> data;
}
如果你再这样做:
MyData md = gson.fromJson(JSON_STRING, MyData.class);
它会正确地反序列化。
我猜你不能直接打印data2。你有没有调试过这个项目并观看了data2的值? – 2013-05-11 04:38:33
看起来他已经在'DataJSON'类中使用了'toString()'!!! – NINCOMPOOP 2013-05-11 04:41:57
是的,你应该把@Override放在toString的顶部。 – 2013-05-11 04:44:16