0

我必须在文件上写一些 JSON 数据。某些 JSON 对象必须在程序执行期间更新,并且这些更新必须保存在文件中(例如数组中的对象)。

是否有一种方法可以在不重写整个文件的情况下做到这一点?

JSON结构:

{
    "varA": {
        "varA1": value,
        "varA2": value,
    },
    "varB": value,
    "varC": value,
    "varD": value,
    "array": [
        { obj1 },
        { obj2 },
        { obj3 },
    ]
}
4

2 回答 2

0

如果您想要更复杂的文件管理解决方案(但实现起来非常简单),我会:

  1. 创建一个新文件,而不是尝试重写现有文件(每次都使用新文件名)。我建议使用包含时间戳(人类可读或毫秒)的东西。
  2. 并在加载/同步文件时始终查找最新文件
  3. 当您“找到”新文件成功读取时,清除旧文件。如果文件没有成功读取,则说明发生了一些事情。退回到下一个文件,最好删除坏文件。或者,等到新文件成功写入。

这样,您无需担心文件未完全写入等。

于 2013-10-14T12:36:52.640 回答
0

如果您有多个文件,我强烈建议您使用 MongoDB,因为这正是它的优点。

使用 MongoDB,您可以执行以下操作(来自docs):

   db.books.update( { item: "Divine Comedy" },
             {
               $set: { price: 18 }, // set property value
               $inc: { stock: 5 },   // increment etc field value

             } )

   // add value in array
   db.bios.update(
     { _id: 1 },
     {
        $push: { awards: { award: "IBM Fellow", year: 1963, by: "IBM" } }
     }

)

更新:另外,既然您提到文件实际上是配置,请查看 Grunt 可以做什么。例如回答这个问题通过 grunt 任务更新 json 文件中的文件引用

于 2013-10-11T14:16:23.533 回答