如何使用java在json中合并重复键
我的json看起来像如何使用java在json中合并重复键,java,json,Java,Json,我的json看起来像 { "data": [ { "location":"hjjh", "latitude":"56.65765", "longitude":"65.6576" } ], "data":
{
"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中,只需将所有值添加到位置
。在反序列化过程之后,应该收集所有数据。