簡體   English   中英

JSON解析數組中的數組(JAVA)

[英]JSON parsing arrays from arrays (JAVA)

我有一個包含JSON文件信息的字符串。

    static String JSON_STRING2 ="{\"lex\": {\"seg\": [ [ 0, 8 ], [ 9, 5 ], [ 15, 6 ] ], \"s\": [ [ 0, 21 ] ], \"p\": [ [ 0, 21 ] ]}, \"morphology\": { \"msd\": [ [ [ \"red\", \"Agpmsnn\" ], [ \"red\", \"Agpfpan\" ], [ \"red\", \"Agpmsvn\" ] ], [ [ \"flower\", \"Ncfsgn-\" ], [ \"flower\", \"Ncfpnn-\" ], [ \"flower\", \"Ncfpvn-\" ] ], [ [ \"blossom\", \"Ncmsnn-\" ] ] ], \"stem\": [ \"rr\", \"ff\", \"bb\" ]}}";

我想做的是將這個數據螞蟻保存到數組中以進行進一步的字符串比較任務,但是目前我不知道如何到達“ seg”層的底層,並且能夠以例如[0,8]值根據其在數組中的位置。 據我所知是通過get()獲取整個Array元素。 我嘗試循環數據,但大多數情況下,我最終遇到錯誤的array或arrayList類型。

我的預覽代碼:

public static void main(String[] args) {

    // Create root JSON Object
    JSONObject object = new JSONObject(JSON_STRING2);
    System.out.println("--------------------------------");

    // Get Data Values
    JSONObject LEX = object.getJSONObject("lex");

    System.out.println("------------- Data Values ---------------");

    System.out.println("Array Words : " + LEX.getJSONArray("seg").get(1));
    System.out.println("Array Sentences : " + LEX.getJSONArray("s"));
    System.out.println("Array Paragraphs : " + LEX.getJSONArray("p"));
    System.out.println("--------------------------------");

    // Get Data Values
    JSONObject MORP = object.getJSONObject("morphology");
    System.out.println("------------- Data Values ---------------");
    System.out.println("Array wordCharacteristic : " + MORP.getJSONArray("msd"));}

有技巧或竅門嗎? 我在這里讀過很多文章,沒有一篇文章分析熟悉的數據。 謝謝。

首先,請注意, JSONArray的索引為0,就像Java中的數組和列表一樣。 因此, LEX.getJSONArray("seg").get(1)返回seg第二項,從而輸出[9,5]

如果要使用第一個 ,只需使用LEX.getJSONArray("seg").get(0)

現在,您可以在這些JSONArray上進行迭代。 有很多方法可以做到這一點,這是一種可能:

    for (Object seg : LEX.getJSONArray("seg")) {
        JSONArray values = (JSONArray) seg;
        for (Object objValue : values) {
            int value = (int) objValue;
            System.out.print(value + " ");
        }
        System.out.println();
    }

將打印出來:

0 8
9 5
15 6

暫無
暫無

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

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