如何从JSONstring读取键的值

时间:2018-04-03 12:48:00

标签: java json

以下是json数据:

"headers": [
            {
              "name": "date",
              "value": "Tue, 13 Mar 2018 12:44:55 GMT"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "last-modified",
              "value": "Tue, 06 Mar 2018 20:15:30 GMT"
            },
            {
              "name": "server",
              "value": "Apache"
            },

            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "content-type",
              "value": "text/html"
            },
            {
              "name": "status",
              "value": "200"
            }]

我的要求是使用java从上面的json中捕获日期,内容编码,最后修改,服务器和状态

我正在使用json-sample-1.1.1版本

可以请一些人协助如何获得这些价值

3 个答案:

答案 0 :(得分:0)

迭代数组,比较名称,并检索它的值

{{1}}

答案 1 :(得分:0)

或者如果您更喜欢Java 8,您可以通过这种方式使用它。

JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject)parser.parse("{\"headers\":[{\"name\":\"date\",\"value\":\"Tue, 13 Mar 2018 12:44:55 GMT\"},{\"name\":\"content-encoding\",\"value\":\"gzip\"},{\"name\":\"last-modified\",\"value\":\"Tue, 06 Mar 2018 20:15:30 GMT\"},{\"name\":\"server\",\"value\":\"Apache\"},{\"name\":\"vary\",\"value\":\"Accept-Encoding\"},{\"name\":\"content-type\",\"value\":\"text/html\"},{\"name\":\"status\",\"value\":\"200\"}]}");
JSONArray headers = (JSONArray)jsonObject.get("headers");
headers.forEach( header -> {
    JSONObject headerJsonObject = (JSONObject)header;
    if(headerJsonObject.get("name").equals("content-encoding")){
        System.out.println(headerJsonObject.get("value"));
    }
    // continue
});

答案 2 :(得分:0)

JSONObject jsonObject = new JSONObject(response);

JSONArray jsonArray = jsonObject.getJSONArray(" array_name");

然后开始循环到jsonarray的大小并通过使用JSONObject的getString(" key_name")等方法获取值