May*_*her 2 java jackson maven spring-boot postman
我正在尝试构建一个 Springboot 应用程序,允许从 Postman 插入 Json 对象并将其保存到包含其他数据的现有 json 文件中。我是杰克逊的新手,所以也许我错过了什么?
这是我的 json 文件的样子:
[
{
"Name":"After Dark",
"Author":"Haruki Murakami"
},
{
"Name":"It",
"Author":"Stephen King"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
@PostMapping("/insertBook")
public void insertBook(@RequestBody Book book) {
File booksJsonFile = Paths.get(this.getClass().getResource("/books.json").toURI()).toFile();
objectMapper.writeValue(booksJsonFile, book);
}
Run Code Online (Sandbox Code Playgroud)
它会插入到一个空文件中,但不会附加到现有的 json 文件中。
我也尝试过这个:
@PostMapping("/insertBook")
public void insertBook(@RequestBody Book book) throws URISyntaxException {
try {
File file = Paths.get(this.getClass().getResource("/books.json").toURI()).toFile();
FileWriter fileWriter = new FileWriter(file, true);
SequenceWriter seqWriter = objectMapper.writer().writeValuesAsArray(fileWriter);
seqWriter.write(book);
seqWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我需要使用其他东西来达到我想要的结果吗?我将感谢你的帮助。
我尝试根据您的代码重现您的问题,并得出以下结论:
不能resources直接修改下的文件。这是解释原因。
我设法将 new 附加JSON到文件中(使用您的方法,但在本地保存文件),但它可能不是您所期望的(json 结构已损坏):
[
{
"Name":"After Dark",
"Author":"Haruki Murakami"
},
{
"Name":"It",
"Author":"Stephen King"
}
][{"Name":"new name","Author":"new author"}]
Run Code Online (Sandbox Code Playgroud)
恐怕无法直接在文件中更新当前的 JSON 结构。
synchronized关键字以避免同时修改文件。[
{
"Name":"After Dark",
"Author":"Haruki Murakami"
},
{
"Name":"It",
"Author":"Stephen King"
}
][{"Name":"new name","Author":"new author"}]
Run Code Online (Sandbox Code Playgroud)
现在books.json有以下内容:
[
{
"Author":"Haruki Murakami",
"Name":"After Dark"
},
{
"Author":"Stephen King",
"Name":"It"
},
{
"Author":"new author",
"Name":"new name"
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1431 次 |
| 最近记录: |