如何使用Java访问JSONObject中的JSONArray?

时间:2015-08-24 11:21:00

标签: java json

我在使用json-simple-1.1.1.jar

在Java中读取json文件时访问JSONArray(" pages")时遇到问题

我的json文件大小约为32MB,格式如下:

{
    "id": "0912898213",
    "pages": [
        {
            "pageUrl": "http://www.example0.com",
            "results": [
                {
                    "number": "1"
                },
                {
                    "number": "2"
                }
            ]
        },
        {
            "pageUrl": "http://www.example1.com",
            "results": [
                {
                    "number": "3"
                },
                {
                    "number": "4"
                }
            ]
        }
    ]
}

然而,访问此json文件的Java代码如下:

JSONParser parser=new JSONParser();
JSONObject pagesObject = (JSONObject) parser.parse(new     FileReader(PATH_JSON_DataExtractor));        
JSONArray jsonArray= (JSONArray) pagesObject.get("pages");

for(int i=0; i<jsonArray.size(); i++){}

问题: jsonArray始终为null。虽然,json格式是正确的,它应该按预期工作!上面的Java代码使用给定的示例json(也在上面),但Java代码不能与32MB json文件一起使用。 json文件的位置也正确,格式也正确,但我仍然遇到此访问问题!

我错误地访问json文件?我一直在寻找类似的问题,我已按照确切的说明访问json文件。但我只是迷失了,因此,寻找建议使这段代码工作。非常感谢你的时间!

2 个答案:

答案 0 :(得分:2)

使用以下代码,它对我来说非常适合。你能检查指定的文件位置是否正确吗?另请尝试阅读pagesObject.get("id")

之类的ID
package json.simple;

import java.io.FileReader;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class ReadJSON {
    public static void main(String[] args) throws Exception {
        JSONParser parser = new JSONParser();
        JSONObject pagesObject = (JSONObject) parser.parse(new FileReader("/home/user/tmp/test.json"));
        System.out.println(pagesObject.get("id"));
        System.out.println(pagesObject.get("pages").getClass().getName());
        JSONArray jsonArray= (JSONArray) pagesObject.get("pages");

        for(int i=0; i<jsonArray.size(); i++){
            System.out.println(jsonArray.get(i));
        }
    }
}

这是我的test.json的内容。与你的完全一样

{
    "id": "0912898213",
    "pages": [
        {
            "pageUrl": "http://www.example0.com",
            "results": [
                {
                    "number": "1"
                },
                {
                    "number": "2"
                }
            ]
        },
        {
            "pageUrl": "http://www.example1.com",
            "results": [
                {
                    "number": "3"
                },
                {
                    "number": "4"
                }
            ]
        }
    ]
}

这是我对maven的依赖

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

答案 1 :(得分:0)

使用: -

  

JSONArray jsonArray= (JSONArray) pagesObject.getJSONArray("pages");