JSON をオブジェクトにデシリアライズしようとしていますが、NullPointerException
. 検索の結果、おそらくデータ構造に問題があることがわかりました。
適切なクラスを作成するのを手伝ってもらえますか、それとも間違いを見つけることができますか?
[
{
"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
(タイヤはクラスフィールドです)