在Java中按键组合多个JSON数组对象

在Java中按键组合多个JSON数组对象,java,arrays,Java,Arrays,我想按键将以下json数组组合成onetargetArray jsonArray[0]:[{key:A01,数据:a},{key:A02,数据:b},{key:A03,数据:c}] jsonArray[1]:[{key:A01,data:o},{key:A02,data:p},{key:A03,data:q}] jsonArray[2]:[{key:A01,数据:s},{key:A02,数据:t},{key:A03,数据:u}] 杰索纳雷[N] ↓ targetJsonArray:[{键:A01

我想按键将以下json数组组合成onetargetArray

jsonArray[0]:[{key:A01,数据:a},{key:A02,数据:b},{key:A03,数据:c}]

jsonArray[1]:[{key:A01,data:o},{key:A02,data:p},{key:A03,data:q}]

jsonArray[2]:[{key:A01,数据:s},{key:A02,数据:t},{key:A03,数据:u}]

杰索纳雷[N]

targetJsonArray:[{键:A01,数据:a | o | s},{键:A02,数据:b | p | t},{键:A03,数据:c | q | u}.]

最终结果是jsonArray类型,键值是固定的,需要添加数据值。我可以用键把它们组合在一起吗?请给出建议或示例代码:

    String strArr1 = "{message:[ {key:A01, data:a}, {key:A02, data:b}, {key:A03, data:c} ]}"; 
    String strArr2 = "{message:[ {key:A01, data:o}, {key:A02, data:p}, {key:A03, data:q} ]}";
    String strArr3 = "{message:[ {key:A01, data:s}, {key:A02, data:t}, {key:A03, data:u} ]}";

    String[] arraySrcObjMsg = {strArr1,strArr2,strArr3};

    JSONArray jsonTargetArray = new JSONArray();

    for(int i=0; i<arraySrcObjMsg.length; i++) {

        String srcMsg = arraySrcObjMsg[i];
        JSONObject jsonSrcObj = new JSONObject(srcMsg);
        JSONArray jsonSrcArray = jsonSrcObj.getJSONArray("message");

        for(int j=0; j<jsonSrcArray.length(); j++) {

            JSONObject jsonSubItem = jsonSrcArray.getJSONObject(j);
            String key = jsonSubItem.getString("key");
            String data = jsonSubItem.getString("data");

            System.out.println("key : " + key);
            System.out.println("data : " + data);

            //Do Something make combine
            //jsonTargetArray.put(key, data=data+"|")
        }

    }

与其合并到数组中,不如尝试使用HashMap这不是直接的答案。但这可以指导您如何思考需要编写的代码

你需要把你的问题看成一系列的问题。列表我只是假设你是一个学生。{键:A01,数据:s}。然后你就可以实现你所需要的,就像下面这样

    Student s1 = new Student("1234", "steve", LocalDate.parse("2019-09-01"), LocalDate.parse("2019-09-10");
    Student s2 = new Student("4321", "George", LocalDate.parse("2019-09-01"), LocalDate.parse("2019-09-10");
    Student[] arr1 = {s1};
    Student[] arr2 = {s2};

    Map<String, List<Student>> result = Arrays.asList(arr1, arr2)
            .stream()
            .flatMap(arr -> Arrays.asList(arr).stream())
            .collect(Collectors.groupingBy(Student::getName));

你能分享一下你为解决这个问题所做的努力吗?我附上了我的代码,我还没有完成。请查看并提供帮助。谢谢您的回复。我添加了示例代码,我可以问你基于我的示例代码的示例代码吗?