簡體   English   中英

從JSONArray中的JSONArray獲取JSONObjects

[英]getting JSONObjects from JSONArray within a JSONArray

我是java的json新手,並且我有一個看起來像這樣的json:

[{
    "color": red,
    "numbers": [
        "8967",
        "3175",
        "1767"
    ],
}, {
    "color": blue,
    "numbers": [
        "1571",
        "5462",
        "54"
    ]
}] 

並嘗試提取顏色和數字的代碼:

while(i<jsonArray.size()){
JSONObject object = (JSONObject) jsonArray.get(i);
colors = object.get("color");
numbers.add(object.get("numbers");

顏色可以很好地提取,但是我的問題是我試圖提取數字並將它們一對一地放置在數組中,而不是像這樣放置它們:

numbers[0]="8967"
numbers[1]="3175"

他們被這樣放置:

numbers[0]={"8967","3175","1767"}

我如何如上所述將它們一一放置?

您要求輸入nunbers字段,它是一個JSON數組,因此將JSON數組添加到了Forst單元格中。 嘗試遍歷“數字”數組的值。 對此不確定 -嘗試使用addAll方法而不是add。

您可以嘗試使用以下代碼:

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

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JSONParserExample {

    public static void main(String[] args) {
        JSONArray jsonArray = null;
        try (BufferedReader input = new BufferedReader(new FileReader("src/main/resources/example.json"))) {
            JSONParser parser = new JSONParser();
            jsonArray = (JSONArray) parser.parse(input);
        } catch (IOException | ParseException e) {
            System.out.println("Failed to load properties from file.");
        }


        Map<String, List<String>> values = new HashMap<>();
        for (Object obj : jsonArray) {
            JSONObject jsonObj = (JSONObject) obj;

            String color = (String) jsonObj.get("color");
            JSONArray numbersJSON = (JSONArray) jsonObj.get("numbers");

            List<String> numbers = new ArrayList<>();
            for (Object o : numbersJSON) {
                numbers.add((String) o);
            }
            values.put(color, numbers);
        }

        for (Map.Entry<String, List<String>> entry : values.entrySet()) {
            System.out.printf("[Key, Value]: %s, %s \n", entry.getKey(),  entry.getValue());
        }
    }
}

暫無
暫無

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

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