使用Exact formate读取和写入JSON文件

时间:2015-06-24 04:07:06

标签: java json

我正在使用json文件的sha:256值。我有一个json文件,我需要读取它并从json值中删除一个特定元素并将其写回文件。但问题是我无法删除文件的格式,甚至不是空白,只有精确的元素。 1个空格删除会导致不同的哈希值。所以我不能删除任何东西而不是元素。举个例子:

JSON文件:

{
    "a": "apple",
    "b": "ball",
    "c": "cat"
}

然后删除一个元素,我的文件需要如下所示:

{
    "a": "apple",
    "c": "cat"
}

我怎样才能使用Java?

2 个答案:

答案 0 :(得分:3)

您可以将json反序列化为Map并删除要删除的密钥。将Map序列化为json并将其写入文件后。示例我使用Gson进行序列化和反序列化:

反序列化:

String json = "{'a': 'apple', 'b': 'ball', 'c': 'cat'}";

Gson gson = new Gson();

Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> myMap = gson.fromJson(json, type);

序列化:

gson.toJson(myMap)

答案 1 :(得分:1)

我用杰克逊。并且有一些PrettyPrinter方法可以像我想要的那样合成json。

我的代码:

  DefaultPrettyPrinter prettyPrinter = new DefaultPrettyPrinter();
  prettyPrinter.indentArraysWith(new DefaultIndenter("   ", DefaultIndenter.SYS_LF));
  prettyPrinter.indentObjectsWith(new DefaultIndenter("   ", DefaultIndenter.SYS_LF));
  String ret = mapper.writer(prettyPrinter).writeValueAsString(json);