【问题标题】:Splitting a nested json to smaller jsons using Gson使用 Gson 将嵌套的 json 拆分为更小的 json
【发布时间】: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/…

标签: java android json gson


【解决方案1】:

为您找到解决方案...

您没有在下面的函数中传递整个响应

尝试此步骤以获得完整的响应:

1) 将数据存储在 String 或您要存储的任何对象类中。

2)

Gson gson = new Gson();
   String string = gson.toJson(response);

注意:您只是在解析剩余的响应。您没有解析原始响应。只需在上面的函数中添加断点重新检查响应即可。

【讨论】:

  • 我做了同样的事情来将列表的 stae 部分作为 json。问题是,我无法将此 json 解析为状态对象。我只想解析响应的子部分。当我执行 State stateObj = gson.fromJson(stateList,State.class); 时,它直接给出空异常
【解决方案2】:
public class Details {

    private int response = 0;
    private String responseMsg = null;
    private Location location = null;

    //add getter and setter

}

public class Location{
    private List<State>stateList;

//add getter and setter

}

终于

public class State {

    private int stateId = 0;
    private String stateName=null;
    private List<District> district;

    //add getter and setter
}

【讨论】:

    猜你喜欢
    • 2018-12-09
    • 1970-01-01
    • 2017-07-27
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多