我想了一下,但是得有一个前提,就是第一个json数组的size必须和第二个json数组的size相同,并且一一对应,否则将造成数组溢出。
如果是基于上面这个前提,那么实现的方法就简单了。
操作json对象,其实标准的方法是将实体类转换成json后再操作,我这里的话为了便捷直接使用谷歌的Gson来创建JsonObject了,其他的json依赖还有阿里巴巴的FastJson等等,看你平时用什么习惯。
引入Gson依赖:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
实现代码:
public class Main {
public static void main(String[] args) {
JsonArray jsonArray1 = new JsonArray()
JsonObject json11 = new JsonObject()
json11.addProperty("数据1", "0000")
json11.addProperty("数据2", "1111")
JsonObject json12 = new JsonObject()
json12.addProperty("数据1", "0000")
json12.addProperty("数据2", "1111")
JsonObject json13 = new JsonObject()
json13.addProperty("数据1", "0000")
json13.addProperty("数据2", "1111")
jsonArray1.add(json11)
jsonArray1.add(json12)
jsonArray1.add(json13)
System.out.println(jsonArray1)
JsonArray jsonArray2 = new JsonArray()
JsonObject json21 = new JsonObject()
json21.addProperty("数据3", "6666")
JsonObject json22 = new JsonObject()
json22.addProperty("数据3", "6666")
JsonObject json23 = new JsonObject()
json23.addProperty("数据3", "6666")
jsonArray2.add(json21)
jsonArray2.add(json22)
jsonArray2.add(json23)
System.out.println(jsonArray2)
//遍历json数组,按位取出对象
for (int i = 0i <jsonArray1.size()i++) {
JsonObject json1 = jsonArray1.get(i).getAsJsonObject()
JsonObject json3 = jsonArray2.get(i).getAsJsonObject()
//遍历数据3内容,通过Entry获取数据3的key和value,并合并到数据1中
for (Map.Entry<String, JsonElement>item : json3.entrySet()) {
json1.addProperty(item.getKey(), item.getValue().getAsString())
}
}
System.out.println(jsonArray1)
}
}
整体思路为:遍历两个json数组,按位进行合并操作。合并时,遍历数据3的jsonObject,获取其key和value,并将其合并到数据1中即可。
运行结果:
java foreach能对jsonarray进行遍历。foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。
拓展:
1、Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
2、Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。
正常的玩法应该是这样, 因为 ObjectMapper 有各种配置, 可以更好的实现转换, 比如 解析数据顺序, 忽略错误字段 等等 高端大气上档次的东西, 你的方法已经被时代淘汰了。ObjectMapper objectMapper = new ObjectMapper()
Map map = objectMapper.readValue(resultStr,LinkedHashMap.class)