【发布时间】:2014-10-10 10:48:42
【问题描述】:
我有这个 json 结构:
{
"itemname1": [
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
}
],
"itemname2": [
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": false
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": false
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
}
],
"itemname3": [
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": "http:\/\/url.com/something"
},
{
"var1": "VALUE STRING",
"var2": "http:\/\/url.com/something",
"var3": "VALUE STRING",
"var4": 123456,
"var5": false
}
]
}
我已经为解析 json 文件创建了一些对象:
ItemList.java
public class ItemList {
List<Item> item;
public List<Item> getItem() {
return item;
}
public void setItem(List<Item> item) {
this.item = item;
}
}
Item.java
public class Item {
ItemTab [] itemTab;
public ItemTab [] getItemTab() {
return itemTab;
}
public void setItemTab(ItemTab [] itemTab) {
this.itemTab = itemTab;
}
}
ItemTab.java
public class ItemTab {
List<ItemInfo> itemInfo;
public List<ItemInfo> getItemInfo() {
return itemInfo;
}
public void setItemInfo(List<ItemInfo> itemInfo) {
this.itemInfo = itemInfo;
}
}
ItemInfo.java
public class ItemInfo {
String var1;
String var2;
String var3;
Integer var4;
String var5;
public String getVar1() {
return var1;
}
public void setVar1(String var1) {
this.var1 = var1;
}
...
}
还有解析部分:
try {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
HttpResponse streamData = Network.getData("http://urlofmyjson.com/file.json");
if (streamData.getStatusLine().getStatusCode() == 200) {
Reader reader = new InputStreamReader(streamData
.getEntity().getContent());
return gson.fromJson(reader, ItemList.class);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
当我打电话给这条线时:
Log.e("RESULT", result.getItem().get(0).getItemTab()[0].getItemInfo().get(0).getVar1().toString());
我收到此错误:
java.lang.NullPointerException:尝试在空对象引用上调用接口方法“java.lang.Object java.util.List.get(int)”
添加:我还需要将“itemname”作为字符串检索,但我不知道该怎么做。
有人可以帮我解决这个问题吗?
谢谢
【问题讨论】:
-
什么是结果?也许 getItem 返回 null ?
-
result 是解析函数返回的对象(ItemList)(通过这一行:“return gson.fromJson(reader, ItemList.class);”)。
-
@Skylive
var4是整数
标签: java android json parsing gson