RapidJSON c ++将json对象追加到文件的高效且可扩展的方式

时间:2017-11-22 16:54:54

标签: c++ json rapidjson

我有一个包含json对象数组的json文件。我正在使用rapidjson c ++。

我想将新对象追加到此文件中的json数组

目前我所做的是我使用fileread流读取json对象中的整个文件,并使用AddMember在我之前读过的该文档的数组中添加新成员(new json对象)。现在我在文件中覆盖这个新对象,并重复新对象的过程。

此解决方案无法扩展。有人可以使用rapidjson或raw filestream指出任何其他解决方案。帮助将不胜感激,我一直在互联网上寻找,但没有运气。

是否有类似使用json以增量方式附加到文件。 或任何其他可扩展的解决方案,因为我的文件大小会随着时间的推移变得非常大,因此每次读取整个文件然后附加一个新对象,然后重写整个文件将浪费内存和CPU时间。

请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

这个问题来自几年前,但是这个答案仍然有意义。

目标是将带有json的{​​{1}}对象附加到包含rapidjson数组的可能已经存在的文件中。满足以下条件:

  1. 不读取或解析现有文件。
  2. 新对象直接添加到现有文件中,而无需合并文档。
  3. 时间不取决于先前添加的内容。

以下是带有注释的代码:

json

答案 1 :(得分:0)

我不知道是否有现成的库,但如果你决定自己做这件事并非不可能。 只需几步即可:

1)在ram中加载所有JSON。 2)接受每个请求以附加JSON并将其保存到日志文件中 3)在写入记录请求后更新JSON在RAM中 4)每x秒块更改,将所有JSON写入磁盘并清除日志文件 5)取消阻止更改 6)转到2

进一步优化可以b:

1)在启动时(崩溃后)检查日志文件并应用日志请求 2)当您编写JSON文件时,不要完全重写,但检查最后是否只有附加,只写新部分。 这听起来怎么样?