簡體   English   中英

如何使用Java訪問JSONObject中的JSONArray?

[英]How to access JSONArray in a JSONObject using Java?

我在使用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始終為null。 雖然,json格式是正確的,並且應該可以正常工作! 上面的Java代碼適用於給定的示例json(同樣在上面),但是Java代碼不適用於32MB json文件。 json文件的位置也正確,格式也正確,但是仍然出現此訪問問題!

我在哪里出錯訪問json文件? 我一直在尋找類似的問題,並且已經按照確切的說明訪問json文件。 但是,我只是迷失了正確性,因此,在尋找使該代碼正常工作的建議。 非常感謝您的寶貴時間!

使用下面的代碼,它對我來說是完美的。 您可以檢查指定的文件位置是否正確? 也嘗試讀取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));
        }
    }
}

這是我的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>

現在終於可以正常工作了,但我仍然不知道問題的真正原因。 我將文件划分為兩個單獨的json文件,並在兩個文件上執行了代碼,然后工作了。 現在,我只需要合並它們並完成它! 這不是一個好的解決方案,但是找不到其他方法!

用這個:-

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM