如何使用java在json中合并重复键

如何使用java在json中合并重复键,java,json,Java,Json,我的json看起来像 { "data": [ { "location":"hjjh", "latitude":"56.65765", "longitude":"65.6576" } ], "data":

我的json看起来像

 {
      "data": [
        {
         "location":"hjjh",
         "latitude":"56.65765",
         "longitude":"65.6576"
        }
             ],
     "data": [
        {
         "location":"thfh",
         "latitude":"67.65765",
         "longitude":"5.6576"
        }
            ]
    }
如何使用JAVA将给定json的键合并为如下格式的单个键

{
  "data": [
    {
     "location":"hjjh",
     "latitude":"56.65765",
     "longitude":"65.6576"
    },
    {
     "location":"thfh",
     "latitude":"67.65765",
     "longitude":"5.6576"
    }
        ]
}
同样的问题也在本报告中讨论过
有人能告诉我java中的修复方法吗?我不确定您使用的是哪个
JSON
库,这里是
Jackson
实现您想要的功能的方法

首先,创建一个类
Data
,其中只有一个成员-
Map
,并为其setter创建一个类,由
@JsonAnySetter
注释。然后实现自定义setter,如下所示:

类数据

类数据{
私有映射映射=新的HashMap();
公共地图getMap(){
返回图;
}
@JSONANYSETER
公共void setMap(字符串键,列表值){
if(地图容器(图例)){
map.get(key).add(value.get(0));
}否则{
map.put(key,Stream.of(value.get(0)).collect(Collectors.toList());
}
}
}
代码片段
在class
Data
准备就绪后,您可以使用
Data
的重复键反序列化给定的JSON字符串,并通过以下代码片段将其序列化为预期的JSON字符串

ObjectMapper mapper=new ObjectMapper();
Data=mapper.readValue(jsonStr,Data.class);
System.out.println(mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(data.getMap());
控制台输出

{
“数据”:[{
“地点”:“hjjh”,
“纬度”:“56.65765”,
“经度”:“65.6576”
}, {
“位置”:“thfh”,
“纬度”:“67.65765”,
“经度”:“5.6576”
} ]
}

查看链接问题。在最新版本中使用
Jackson
库。创建两个类:
位置
位置。
位置
应该有3个字段:
位置
纬度
经度
。类
位置
应具有
私有列表位置=新ArrayList()
和用
@JsonAnySetter
注释注释的方法:
私有void setLocations(字符串名称、列表值)
。在body中,只需将所有
值添加到
位置
。在反序列化过程之后,应该收集所有数据。