在Java中按键组合多个JSON数组对象
我想按键将以下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类型,键值是固定的,需要添加数据值。我可以用键把它们组合在一起吗?请给出建议或示例代码:在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
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));
你能分享一下你为解决这个问题所做的努力吗?我附上了我的代码,我还没有完成。请查看并提供帮助。谢谢您的回复。我添加了示例代码,我可以问你基于我的示例代码的示例代码吗?