【问题标题】:How to merge 3 or more JSON in Java如何在 Java 中合并 3 个或更多 JSON
【发布时间】:2017-05-23 03:20:35
【问题描述】:

我有一个关于如何基于同一个键将多个 JSON 组合为 1 的问题。关键是第一个索引。

例如。

String data_a = "{\"results\":[[\"1\",\"6000\"],[\"2\",\"5000\"]]\"}";
String data_b = "{\"results\":[[\"1\",\"2000\"],[\"3\",\"5000\"]]\"}";
String data_c = "{\"results\":[[\"1\",\"3000\"],[\"3\",\"6000\"],
[\"4\",\"1000\"]]\"}";

将字符串 a、b、c 组合为 1,如下所示:

{
 "results ": [
    ["1", "6000", "2000", "3000"],
    ["2", "5000", "", ""],
    ["3", "", "5000", "6000"],
    ["4", "", "", "1000"]
 ]
}

在这里,我尝试使用 gson 转换为 Map。但是混淆如何循环和匹配键。

Map firstObject = new Gson().fromJson(data_a, HashMap.class);
Map secondObject = new Gson().fromJson(data_b, HashMap.class);
Map thirdObject = new Gson().fromJson(data_c, HashMap.class);

【问题讨论】:

  • 除非用花括号括起来,否则您的字符串不是有效的 JSON。
  • 谢谢,会更新
  • 看起来这不正确 -> ["1", "6000", "2000", "3000"], ......你的意思是 {"1" : [ " 6000", "2000", "3000"] ,......},
  • 喜欢你的目的其实也可以。我也可以阅读结果。但问题是合并json。我不知道。

标签: java json hashmap gson


【解决方案1】:

在直到&的条件下迭代while循环,除非所有3个映射都没有 空的。然后将他们的关键值放在第四张地图中。同时你 需要删除您放入第四张地图的特定条目。

while(!H1.isEmpty() && !H2.isEmpty() && !H2.isEmpty()){

 H4.put(H*) // H1 key
 H*.remove(...) // H1 key

 }

您还可以从地图中获取所有键集并放入集合中。

Set<int> keys = new Set<int>();
  keys.add(h*.keySet())

遍历键。

【讨论】:

  • tq。但是我们如何匹配密钥呢?在数据 a、b 和 c 之间。
  • 从一个映射中获取所有键。& 然后从其他映射中选择这些键值
  • 或者您可以获取mapp地图的关键集并添加到集合中
猜你喜欢
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 2021-02-27
  • 1970-01-01
  • 2012-10-25
  • 2016-04-17
  • 1970-01-01
相关资源
最近更新 更多