如何将项目附加到文件中存储的 JSON?
How to append an item to a JSON stored in a file?
我正在尝试将 JSON 对象写入具有 FS 的数据库,但它没有按预期工作。我想要做的是在其中写入 JSON 数据:[]
示例:
[
{"name":"jhon"},
{"name":"jhonathan"}
]
谢谢。
您提供的评论没有多大意义,因为您在post和评论中提供的JSON数据完全不同。但我明白了它的要点。我猜你有一个包含数组的 JSON 文件,你想将新项目推送到它。让我们这样做。
事实是,当您调用 fs.appendFile
时,您只是在写入文件末尾。这样做没有遵循 JSON 格式。
您需要这样做:
- 读取文件内容。
- 将 JSON 文本解析为对象。
- 更新内存中的对象。
- 将 JSON 格式的对象写回文件系统。
为简单起见,我将调用同步方法,但您应该能够很容易地将其转换为异步方法。
const path = __dirname + 'db.json'
// Reading items from the file system
const jsonData = fs.readFileSync(path)
const items = JSON.parse(jsonData)
// Add new item to the item list
items.push(newItem)
// Writing back to the file system
const newJsonString = JSON.stringify(items)
fs.writeFileSync(path, newJsonString)
我正在尝试将 JSON 对象写入具有 FS 的数据库,但它没有按预期工作。我想要做的是在其中写入 JSON 数据:[]
示例:
[
{"name":"jhon"},
{"name":"jhonathan"}
]
谢谢。
您提供的评论没有多大意义,因为您在post和评论中提供的JSON数据完全不同。但我明白了它的要点。我猜你有一个包含数组的 JSON 文件,你想将新项目推送到它。让我们这样做。
事实是,当您调用 fs.appendFile
时,您只是在写入文件末尾。这样做没有遵循 JSON 格式。
您需要这样做:
- 读取文件内容。
- 将 JSON 文本解析为对象。
- 更新内存中的对象。
- 将 JSON 格式的对象写回文件系统。
为简单起见,我将调用同步方法,但您应该能够很容易地将其转换为异步方法。
const path = __dirname + 'db.json'
// Reading items from the file system
const jsonData = fs.readFileSync(path)
const items = JSON.parse(jsonData)
// Add new item to the item list
items.push(newItem)
// Writing back to the file system
const newJsonString = JSON.stringify(items)
fs.writeFileSync(path, newJsonString)