【发布时间】:2017-06-20 06:30:44
【问题描述】:
我想从整个嵌套的列表中获取一部分 json。我有一个如下所示的 json:
{
"response": 200,
"responseMsg": "Allright",
"location": [
{
"stateId": 1,
"stateName": "West Bengal",
"district": [
{
"districtId": 15,
"districtName": "abc",
"village": [
{
"villageId": 121,
"villageName": "ABC"
},
{
"villageId": 90,
"villageName": "XYZ"
}
]
},
{
"districtId": 11,
"districtName": "xyz",
"village": [
{
"villageId": 58,
"villageName": "PQR"
}
]
}
]
}
]
}
我编写的 bean 文件如下: 详细信息.java:
public class Details {
private int response = 0;
private String responseMsg = null;
private List<State> states = null;
public List<State> getLocation() {
return location;
}
State.java:
public class State {
private int stateId = 0;
private String stateName=null;
private List<District> district;
public List<District> getDistrict() {
return district;
}
现在,我只需要不同的 State json,这样我就可以使用它作为 List 来填充 android 中的微调器。 为了解析 json,我正在使用
Gson googleJson = builder.create();Details details = googleJson.fromJson(result, Details.class);
List<State> stateList = details.getLocation();
但是当我再次使用 gson.toJson(stateList) 将其转换为 json 时,会给出:
[
{
"district": [
{
"village": [
{
"villageName": "Mekhliganj",
"villageId": 57
}
],
"districtName": "Cooch Bihar",
"districtId": 10
}
],"stateName=West Bengal","stateId":1
}
}
但是当我再次将状态名称转换为 json 时,这是另一种方式。 此外,当我再次尝试将其解析为时,同样的 json (stateList) 会给出空指针异常:
State stateObj = gson.fromJson(stateList,State.class);
这样做的正确方法应该是什么?即使用gson从整体中获取json(列表)的一部分并解析该部分?
【问题讨论】:
-
我认为令人困惑的问题,请以适当的方式详细说明,您提到 Json 带有“状态”,但在您的回复中没有名为 states 的标签。请正确解释,以便为您提供帮助,
-
@PratikDasa 我的意思是位置。我基本上想要一个只有部分完整 json 响应的 json,即一个只有州列表的 json(以及州内的地区、村庄)
-
您必须使用 GSON 吗?结果是什么?我的意思是字符串还是数组? @Prakruti
-
需要将json作为字符串获取,然后再将结果作为arraylist用于微调适配器。
-
我认为这些问题的链接会对你有所帮助:(1) stackoverflow.com/questions/22753719/… (2) stackoverflow.com/questions/4556230/…