【问题标题】:Replace dot in all JSON keys in Java替换Java中所有JSON键中的点
【发布时间】:2017-07-21 09:09:39
【问题描述】:

例如,我们有这样的 JSON,但如果有许多嵌套块,它可能会更复杂:

{"TestKey": "TEST", "Test.dots": [{ "child.dot": "child.value.1"}, {"child.dot": "child.value 2"}] }

我想将此 JSON 字符串中的所有点替换为另一个字符。我在这里找到了类似的解决方案:Replace whitespace in JSON keys,但这个解决方案无法处理 ArrayList。你有建议如何处理它吗?

如果我们将点替换为下划线,所需的 JSON 应该如下所示:

{"TestKey": "TEST", "Test_dots": [{ "child_dot": "child.value.1"}, {"child_dot": "child.value 2"}] }

【问题讨论】:

  • 你能发布你的代码来提供这个 JSON 数据吗?我可以帮你,你只需要改变你的代码来提供你想要的 JSON 数据。
  • 这就是问题所在——JSON 并不总是相同的,它不能映射到任何对象。我需要一个强大的解决方案,它只是删除点。

标签: java json parsing gson


【解决方案1】:

删除关键节点并重新添加

  jObject = new JSONObject(contents.trim());
  Iterator<?> keys = jObject.keys();

  while( keys.hasNext() ) {
         String key = (String)keys.next();
         if ( jObject.get(key) instanceof JSONObject ) {
               obj.put(key.replaceAll("\\.", ""), 
               obj.get(get(key)));
               obj.remove((key));
        }

}

遍历 json 获取密钥替换并删除并再次放置

【讨论】:

  • 我想将此 JSON 键中的所有点替换为另一个字符。提到的字符串只是示例。正如我提到的,最终的 JSON 要长得多。我需要所有 JSON 键的通用解决方案。
猜你喜欢
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多