2013-05-11 137 views
-1

由于某种原因,我在解析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); 
    } 
} 
+0

我猜你不能直接打印data2。你有没有调试过这个项目并观看了data2的值? – 2013-05-11 04:38:33

+0

看起来他已经在'DataJSON'类中使用了'toString()'!!! – NINCOMPOOP 2013-05-11 04:41:57

+0

是的,你应该把@Override放在toString的顶部。 – 2013-05-11 04:44:16

回答

0

你在你的json中有一个列表,所以你需要在列表中包装DataJSON。像这样的东西。

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

我不是一个给予downvote的人,但请为提问者的情况提供这个类(至少是属性)。 – 2013-05-11 04:49:39

+0

这是班级。它使用提问者提供的类。 – 2013-05-11 04:57:09

+0

啊对不起,我不熟悉这个话题。 – 2013-05-11 05:10:27

0

你JSON是与包含对象的阵列中的单个字段(data)的对象。您有代表数组内的对象DataJSON

你的POJO GSON将反序列化的需求是:

class MyData { 
    List<DataJSON> data; 
} 

如果你再这样做:

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

它会正确地反序列化。