我试图反序列化一个JSON到我的对象,但我得到一个NullPointerException
。搜索后,我发现这个问题可能在数据结构中。反序列化JSON以反对Gson
你能帮我创建一个合适的班级,或者发现我的错误吗?
[
{
"id": "54",
"brand": "Cooper",
"model": "Discoverer H\/T Plus",
"d": "13",
"w": "7",
"h": "0",
"comment": "test1",
"time_add": "2013-11-14 12:42:47",
"imgs": [
{
"id": "28",
"reused_id": "54",
"path_big": "path5",
"path_small": "",
"time_add": "0000-00-00 00:00:00"
}
]
},
{
"id": "55",
"brand": "Barum",
"model": "Bravuris",
"d": "13",
"w": "7",
"h": "0",
"comment": "ooooooopll",
"time_add": "2013-11-14 12:43:55",
"imgs": [
{
"id": "29",
"reused_id": "55",
"path_big": "path5",
"path_small": "",
"time_add": "0000-00-00 00:00:00"
}
]
},
{
"id": "56",
"brand": "Kumho",
"model": "Kumho KH17",
"d": "19",
"w": "185",
"h": "50",
"comment": "bugaga",
"time_add": "2013-11-14 13:14:58",
"imgs": [
{
"id": "30",
"reused_id": "56",
"path_big": "path5",
"path_small": "",
"time_add": "0000-00-00 00:00:00"
}
]
},
{
"id": "57",
"brand": "Barum",
"model": "Bravuris",
"d": "13",
"w": "7",
"h": "0",
"comment": "",
"time_add": "2013-11-14 13:32:11",
"imgs": [
{
"id": "31",
"reused_id": "57",
"path_big":path5",
"path_small": "",
"time_add": "0000-00-00 00:00:00"
}
]
},
{
"id": "58",
"brand": "Barum",
"model": "Bravuris",
"d": "13",
"w": "7",
"h": "0",
"comment": "",
"time_add": "2013-11-14 13:33:13",
"imgs": [
{
"id": "32",
"reused_id": "58",
"path_big": "path5",
"path_small": "",
"time_add": "0000-00-00 00:00:00"
}
]
}
]
这是我试图填补了类:
public class Tyres {
public Tyres() {
}
public String id;
public String brand;
public String model;
public String d;
public String w;
public String h;
public String comment;
public String time_add;
public ArrayList<Images> imgs;
public Map<String, String> getInfo() {
Map<String, String> result = new HashMap<String, String>();
result.put("id", id);
result.put("brand", brand);
result.put("model", model);
result.put("d", d);
result.put("w", w);
result.put("h", h);
result.put("comment", comment);
result.put("time_add", time_add);
return result;
}
public ArrayList<Map<String, String>> getImgsInfo() {
ArrayList<Map<String, String>> result = new ArrayList<Map<String, String>>();
Map<String, String> imgInfo;
for(Images img: imgs) {
imgInfo = img.getInfo();
result.add(imgInfo);
}
return result;
}
}
public class Images {
public Images() {
}
public String id;
public String reused_id;
public String path_big;
public String path_small;
public String time_add;
public Map<String, String> getInfo() {
Map<String, String> result = new HashMap<String, String>();
result.put("id", id);
result.put("reused_id", reused_id);
result.put("path_big", path_big);
result.put("path_small", path_small);
result.put("time_add", time_add);
return result;
}
}
和遵循的是我如何努力来初始化对象:
private void history_to_Tyres(String historyJSON) {
Gson gson = new Gson();
Type ttype = (Type) new ArrayList<Tyres>();
try {
tyres = gson.fromJson(historyJSON, ttype);
} catch (Exception e) {
Toast.makeText(getBaseContext(), "uncasted", Toast.LENGTH_SHORT).show();
}
}
,但我有一个NullPointerException
当我尝试拨打电话tyres
(轮胎是一个班级字段)
您是否需要手动解析数据?你为什么不直接使用“映射”? – TeeTracker
感谢您的建议,我在这篇文章中找到了解决方案(声明所有getters&setters之后): http://stackoverflow.com/questions/9598707/gson-throwing-expected-begin-object-but-was-begin-array – Sild