Reputation: 3443
I'm trying to deserialize a JSON into my object, but I get a NullPointerException
. After search, I found that problem maybe in data struct.
Can you help me to create a suitable class, or maybe to spot my mistake?
[
{
"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"
}
]
}
]
This is the class I'm trying to fill:
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;
}
}
and the follow is how I try to initialize the object:
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();
}
}
but I've got a NullPointerException
when I try to call tyres
(tyres is a class field)
Upvotes: 1
Views: 157
Reputation: 13734
You need getters & setters for all attributes in the classes.
Implement serializable interface for the classes.
Upvotes: 2
Reputation: 5295
Your json is wrong at "`"path_big": path5",
Here is the correct Json :-
[
{
"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-0000: 00: 00"
}
]
},
{
"id": "58",
"brand": "Barum",
"model": "Bravuris",
"d": "13",
"w": "7",
"h": "0",
"comment": "",
"time_add": "2013-11-1413: 33: 13",
"imgs": [
{
"id": "32",
"reused_id": "58",
"path_big": "path5",
"path_small": "",
"time_add": "0000-00-0000: 00: 00"
}
]
}
]
Please use www.jsonlint.com to verify your JSON.
`
Upvotes: 1