【发布时间】:2018-10-17 12:55:30
【问题描述】:
我有一个这样的字符串
{"key0":"value0","key1":"value1","key0":"value3"}
我想将它存储在地图中,所需的结果是 {"key0":"value3","key1":"value1"}
使用 org.json.JsonObject:我将字符串传递给构造函数并抛出 Duplicate key 异常
使用 GSON:当我尝试通过 new Gson.fromJson(string,Type) 时出现同样的异常
使用 Jackson:确实有效
是否有使用 JSONObject 和 Gson 实现相同目的的解决方法
【问题讨论】:
-
您确实意识到拥有相同的键会导致覆盖该值。我认为,即使它在杰克逊中工作,如果键在输入中重复,你也不能保证特定键的值是什么。
-
您能否详细说明所需结果背后的逻辑?是否只是某个键的最后一个值,以便它们碰巧出现在 JSON 文件/字符串中?所以你假设“value0”首先插入到地图中,然后“value3”覆盖它?我认为在任何地方都无法保证订单。但是您还应该考虑到您的示例不是有效的 JSON,如果它表示地图。另一方面:如何序列化地图并在结果 JSON 中为同一个键设置两个值?