java如何为许多深度级别提取json元素

时间:2016-07-11 11:26:44

标签: java android json apache

如果我有这个json

{
"aggregations" : {
"cityAgg": {
"'buckets": {
"buckets" : [
{},{},{}
]
}
}
}
}

我可以使用简单json

提取最后一个buckets数组
JSONObject aggregations = (JSONObject)jsonResponse.get("aggregations");
        JSONObject cityAgg = (JSONObject)aggregations.get("cityAgg");
        JSONObject buckets = (JSONObject) cityAgg.get("buckets");
        JSONArray result = (JSONArray) buckets.get("buckets");

但是为每个json级别制作对象很无聊,是不是有更好/更简单的方法呢?

可能是:

jsonResponse.get("aggregation/cityAgg/buckets/buckets")

1 个答案:

答案 0 :(得分:0)

您可以使用Google提供的Gson格式化json,将Object转换为Json,反之亦然。

Gson是一个Java库,可用于将Java对象转换为JSON表示。它还可用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括你没有源代码的预先存在的对象。

可以在这里查看样本: Gson Usage

示例

{

"aggregations" : {
"cityAgg": {
"'buckets": {
"buckets" : [
{},{},{}
]
}
}
}
}

创建具有此深度层次结构的模型

class Aggregations{
  private CityAgg cityAgg;
  //getters and setters
}

class CityAgg{
 private Bucket buckets;
 //getters and setters
}

class Bucket{
  //some properties
}

您将使用父类来获取其中加载的所有属性