我正在使用json文件的sha:256值。我有一个json文件,我需要读取它并从json值中删除一个特定元素并将其写回文件。但问题是我无法删除文件的格式,甚至不是空白,只有精确的元素。 1个空格删除会导致不同的哈希值。所以我不能删除任何东西而不是元素。举个例子:
JSON文件:
{
"a": "apple",
"b": "ball",
"c": "cat"
}
然后删除一个元素,我的文件需要如下所示:
{
"a": "apple",
"c": "cat"
}
我怎样才能使用Java?
答案 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);