java - 忽略 JSONObject 中的重复键

标签 java json

我有一个 JSON 格式的字符串

String str = "{\"innerkey1\":\"innervalue1\",
\"innerkey2\":\"innervalue2\",\"innerkey1\":\"innervalue3\"}";

当我试图从这个字符串创建一个对象时

try  {
    JSONObject obj = new JSONObject(str); 
} catch(Exception e) {
     e.printStackTrace();
}

我遇到了一个错误

org.json.JSONException: Duplicate key "innerkey1"

有没有什么方法可以通过忽略字符串中的最后一个键来创建 JSONObject?

最佳答案

您可以使用 objectMapper 来跳过这个错误

ObjectMapper mapper = new ObjectMapper();
String json = "{\"name\":\"test\", \"name\":\"new test\"}";

Map<String, Object> map = new HashMap<String, Object>();

map = mapper.readValue(json, new TypeReference<Map<String, String>>(){});

现在您可以轻松地将 map 转换为 JSONObject

new JSONObject(map);

关于java - 忽略 JSONObject 中的重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47876328/

相关文章:

java - Java Classloader 能否重写系统类(仅它们的副本)的字节码?

javascript - 如何将所有数据添加到我的数组中以与色标一起使用?

java - ViewPager 未从服务器获取图像

javascript - 在循环中添加 addEventListener() 仅适用于最后一个按钮

java - Apache POI,.getRuns() 未返回所有运行

当用户在控制台中键入 quit 时用于退出程序的 Java 编写单元测试

java - 从表中删除列之前要考虑的因素

java - 哪些代码折叠插件适用于 Eclipse 3.6?

由于字符无效,Json 解码失败

java - 使用Java和AWS Lambda函数解析JSON错误