【问题标题】:How to append an item to a JSON stored in a file?如何将项目附加到存储在文件中的 JSON?
【发布时间】:2021-10-22 10:34:42
【问题描述】:

我正在尝试使用 FS 将 JSON 对象写入数据库,但它没有按预期工作。我想要做的是在其中写入 JSON 数据:[] 示例:

[
{"name":"jhon"},
{"name":"jhonathan"}
]

代码如下:

谢谢。

【问题讨论】:

  • 将您的代码提供为文本而不是屏幕截图,这样人们更容易复制它。除此之外 - 你有什么行为?
  • @AllanJuan 代码:pastebin.com/bhrbDzx0 基本上 fs 正在写这个:[{" name ":" jhon "}] [{"name": "jhonathan"}] 但我想要的是:[{"name": "jhon"}, {"name": "jhonathan"}]

标签: javascript node.js fs


【解决方案1】:

您提供的评论没有多大意义,因为您在帖子和 cmets 中提供的 JSON 数据完全不同。但我明白了它的要点。我猜您有一个包含数组的 JSON 文件,并且您想向其中推送新项目。让我们这样做吧。

问题是,当您调用fs.appendFile 时,您只是在写入文件末尾。您这样做并没有遵循 JSON 格式。

你需要这样做:

  1. 读取文件内容。
  2. 将 JSON 文本解析为对象。
  3. 更新内存中的对象。
  4. 将 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)

【讨论】:

  • 谢谢!成功了!
猜你喜欢
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2014-03-06
  • 2020-04-13
  • 1970-01-01
  • 2019-12-29
相关资源
最近更新 更多