有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

在使用json-simple-1.1.1读取Java中的json文件时,我在访问JSONArray(“页面”)时遇到问题。罐子

我的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始终为空。尽管如此,json格式是正确的,它应该按照预期工作!上面的Java代码适用于给定的示例json(也在上面),但Java代码不适用于32MB json文件。json文件的位置也是正确的,格式也是正确的,但我还是遇到了这个访问问题

在哪里访问json文件会出错?我一直在寻找类似的问题,并按照确切的说明访问json文件。但我只是迷失在正确的方向上,因此,我正在寻找使这段代码工作的建议。非常感谢您抽出时间


共 (3) 个答案

  1. # 1 楼答案

    现在终于可以工作了,但我仍然不知道问题的真正原因。我将该文件划分为两个单独的json文件,并在这两个文件上执行代码,结果成功了。现在我只要把它们合并就行了!这不是一个好的解决方案,但找不到其他方法

  2. # 2 楼答案

    使用这个:-

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

  3. # 3 楼答案

    下面的代码对我来说是完美的。你能检查一下指定的文件位置是否正确吗?还可以尝试读取id,比如pagesObject.get("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));
            }
        }
    }
    

    这是我测试的内容。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>