Java 在JSONArray中从JSONArray获取JSONObject

Java 在JSONArray中从JSONArray获取JSONObject,java,arrays,json,Java,Arrays,Json,我不熟悉java的json,我有一个json,看起来像这样: [{ "color": red, "numbers": [ "8967", "3175", "1767" ], }, { "color": blue, "numbers": [ "1571", "5462", "54" ] }] numbers[0]="8967" numbers[1]="

我不熟悉java的json,我有一个json,看起来像这样:

[{
    "color": red,
    "numbers": [
        "8967",
        "3175",
        "1767"
    ],
}, {
    "color": blue,
    "numbers": [
        "1571",
        "5462",
        "54"
    ]
}] 
numbers[0]="8967"
numbers[1]="3175"
numbers[0]={"8967","3175","1767"}
和代码尝试提取颜色和数字:

while(i<jsonArray.size()){
JSONObject object = (JSONObject) jsonArray.get(i);
colors = object.get("color");
numbers.add(object.get("numbers");
它们的位置如下:

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

我怎样才能让它们像上面那样按1放置?

您要求输入Numbers字段,它是一个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());
        }
    }
}
import org.json.simple.JSONArray;
导入org.json.simple.JSONObject;
导入org.json.simple.parser.JSONParser;
导入org.json.simple.parser.ParseException;
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
公共类JSONParseReSample{
公共静态void main(字符串[]args){
JSONArray JSONArray=null;
try(BufferedReader input=newbufferedreader(newfilereader(“src/main/resources/example.json”)){
JSONParser=新的JSONParser();
jsonArray=(jsonArray)parser.parse(输入);
}catch(IOException | ParseException e){
System.out.println(“未能从文件加载属性”);
}
映射值=新的HashMap();
for(对象对象对象:jsonArray){
JSONObject jsonObj=(JSONObject)obj;
字符串颜色=(字符串)jsonObj.get(“颜色”);
JSONArray numbersJSON=(JSONArray)jsonObj.get(“数字”);
列表编号=新的ArrayList();
for(对象o:numbersJSON){
添加((字符串)o);
}
值。放置(颜色、数字);
}
for(Map.Entry:values.entrySet()){
System.out.printf(“[Key,Value]:%s,%s\n”,entry.getKey(),entry.getValue());
}
}
}