我有一个包含大量JSON对象的JSON文件。我在StreamReader上使用JsonTextReader来读取文件中的数据。但是,也需要更新一些属性。
是否可以使用JsonTextWriter查找和更新特定的JSON对象?
答案 0 :(得分:1)
通常,修改文件意味着将整个文件读取到内存中,进行更改,然后将整个文件写回文件。 (有些文件格式不需要这样,因为它具有静态大小的布局或其他机制,可以解决整个文件,但JSON不是其中之一。)
JSON.net能够reading and writing JSON streams as a series of tokens,所以应该可以通过使用它来最小化内存占用。但是,您仍然会将整个文件读入内存,然后将其写回。由于同时读/写,您需要写入临时文件,然后,一旦完成,将该临时文件移动/重命名到正确的位置。
根据您构建JSON的方式,您可能还需要跟踪您在该结构中的位置。这可以通过在收到令牌时跟踪令牌并使用它们来维持一种进入结构的“路径”来完成。该路径可用于确定您何时在需要更新的地方。
一般策略是读取令牌,如果需要可以更改它们,然后再将它们写出来。