Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过Jackson在同一级别上用JSON编写多个值_Java_Json_Jackson_Jackson Databind - Fatal编程技术网

Java 通过Jackson在同一级别上用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

现在我正试图用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文件中,并只编辑预先存在的数据?

您可以继续将
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