出于某种原因,我遇到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);
}
}
答案 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);
它会正确反序列化。