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

标签 java json

我在使用 json-simple-1.1.1.jar 读取 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 文件。但是我只是迷失了正确的方向,因此,寻找使此代码正常工作的建议。非常感谢您的宝贵时间!

最佳答案

下面的代码非常适合我。你能检查指定的文件位置是否正确吗?也可以尝试像 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>

关于java - 如何使用 Java 访问 JSONObject 中的 JSONArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181072/

相关文章:

php - 在 php 脚本中访问发布的 Json 数据

java - 使用 JFileChooser 保存 BufferedImage 会引发一些问题

java - 对 JSF-Seam Web 应用程序页面进行 GZIP 的最佳方法是什么

json - JSON 模式中的重用模式

php - 如何将一个 JavaScript 对象复制到另一个对象中?

java - 使用 Jackson 处理 json 反序列化中缺失的类

java - 尝试从 JSON 数组获取对象值时观察到空指针

java - Spring - 如何以编程方式引用 bean

java - 比 Java 中的 If(x instanceof y) 更好的方法?

java - Java的DTrace可以用于Windows等非Unix Like操作系统吗?