从url解析嵌套的json并使用java从数组中提取值

时间:2016-02-18 22:22:58

标签: java json nested

我有一个json url链接,我想读取它的json响应并将值提取到变量中,以便我以后可以使用它们

{
  "responseHeader": {
    "status": 0,
    "QTime": 4,
    "params": {
      "q": "*:*",
      "facet.field": "TESTARRAY",
      "indent": "true",
      "rows": "0",
      "wt": "json",
      "facet": "true"
    }
  },
  "response": {
    "numFound": 12,
    "start": 0,
    "docs": []
  },
  "facet_counts": {
    "facet_queries": {},
    "facet_fields": {
      "TESTARRAY": [
        "JON",
        22,
        "SMITH",
        34,
        "ROBERT",
        12
      ]
    },
    "facet_dates": {},
    "facet_ranges": {},
    "facet_intervals": {}
  }
}

提取时,我正在使用

JSONObject obj = new JSONObject(IOUtils.toString(new URL(jsonlink), Charset.forName("UTF-8")));
JSONArray arr = obj.getJSONArray("TEST_ARRAY");
        Integer smithage=arr.get("SMITH");

到目前为止,这种方法并不奏效。 什么是处理它的最佳方式 提前致谢

1 个答案:

答案 0 :(得分:0)

TEST_ARRAY不是顶级字段,您需要深入了解它,例如:

JSONObject obj = new JSONObject(IOUtils.toString(new URL(jsonlink), Charset.forName("UTF-8")));
JSONObject facet_counts = obj.getJSONObjecy("facet_counts");
JSONObject facet_fields = facet_counts.getJSONObjecy("facet_fields");
JSONArray test_array = obj.getJSONArray("TESTARRAY");
Integer smithage = test_array.getInt(3);