【发布时间】:2020-02-10 23:18:02
【问题描述】:
现在我正在尝试用 JSON 写出单词和它们的分数,但是实际编写它们被证明是相当艰巨的。我写东西的代码相对简单,如果它只是一个值,会工作,但是我需要一遍又一遍地访问这些值。
这是我用来写的代码:
public void write(String word) throws IOException {
ValuedWord valuedWord = new ValuedWord(0,0,0,0,0,0,0,0);
writer.withRootName(word).writeValue(generator, valuedWord);
}
理想情况下,这应该会产生以下内容:
{
"WORD_A" : {
"SCORE_1" : 0,
"SCORE_2" : 0
},
"WORD_B" : {
"SCORE_1" : 0,
"SCORE_2" : 0
}
}
但是,当我第二个单词时,格式似乎变得很奇怪,变成了两个单独的级别,而不是保持在同一级别:
{
"no" : {
"joy" : 0.0,
"anger" : 0.0,
"sadness" : 0.0,
"fear" : 0.0,
"love" : 0.0,
"disliking" : 0.0,
"liking" : 0.0,
"uses" : 0
}
} {
"yes" : {
"joy" : 0.0,
"anger" : 0.0,
"sadness" : 0.0,
"fear" : 0.0,
"love" : 0.0,
"disliking" : 0.0,
"liking" : 0.0,
"uses" : 0
}
}
每次我写入文件时,它都会立即删除已经存在的所有内容,这也无济于事。
如何将数据附加到 JSON 文件,在同一级别上,并且只编辑预先存在的数据?
【问题讨论】:
-
您需要从文件中读取整个
JSON,将其反序列化为Map<String, ValuedWord>,将新元素添加到地图并再次序列化到文件中。看看使用Gson库的类似问题How can I use gson to create a set of key value pairs?
标签: java json jackson jackson-databind