Java 通过Jackson在同一级别上用JSON编写多个值
现在我正试图用JSON写出单词和它们的分数,但事实证明,要写出它们是相当困难的。我写东西的代码相对简单,如果它只是一个值就可以工作,但是我需要反复访问这些值 以下是我用来编写的代码:Java 通过Jackson在同一级别上用JSON编写多个值,java,json,jackson,jackson-databind,Java,Json,Jackson,Jackson Databind,现在我正试图用JSON写出单词和它们的分数,但事实证明,要写出它们是相当困难的。我写东西的代码相对简单,如果它只是一个值就可以工作,但是我需要反复访问这些值 以下是我用来编写的代码: public void write(String word) throws IOException { ValuedWord valuedWord = new ValuedWord(0,0,0,0,0,0,0,0); writer.withRootName(word).wri
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文件中,并只编辑预先存在的数据?您可以继续将
ValuedWord
对象添加到映射中,键为word
,在创建所有ValuedWord
对象后,序列化为JSON
示例代码:
ValuedWord valuedWord1=新的ValuedWord(0,0,0,0,0,0);
ValuedWord valuedWord2=新的ValuedWord(0,2,3,0,0,0,0);
Map Map=newhashmap();
地图放置(“字1”,值1);
地图放置(“字2”,值2);
字符串mapJson=objectMapper.writeValueAsString(映射);
您需要从文件中读取整个JSON
,将其反序列化为映射
,将新元素添加到映射,然后再次序列化到文件中。看看类似的问题,其中使用了Gson
library