2016-10-30 2 views
0

У меня есть файл JSON с большим массивом объектов JSON. Я использую JsonTextReader для StreamReader для чтения данных из файлов. Но также необходимо обновить некоторые атрибуты.Чтение и обновление объекта файла JSON

Возможно ли использовать JsonTextWriter для поиска и обновления конкретного объекта JSON?

ответ

1

Как правило, изменение файла означает чтение всего файла в память, внесение изменений, а затем запись всего этого в файл. (Существуют определенные форматы файлов, которые не требуют этого, благодаря наличию макета статического размера или других механизмов, предназначенных для работы во время чтения во всем файле, но JSON не является одним из них.)

JSON .net способен reading and writing JSON streams as a series of tokens, поэтому при использовании этого возможно минимизировать объем памяти. Однако вы все равно будете читать весь файл в памяти, а затем записывать его обратно. Из-за одновременного чтения/записи вам нужно будет записать в временный файл, а затем, как только вы закончите, переместите/переименуйте этот файл temp в нужное место.

В зависимости от того, как вы структурировали JSON, вам также может потребоваться отслеживать, где вы находитесь в этой структуре. Это можно сделать, отслеживая маркеры по мере их получения и используя их для поддержания своего рода «пути» в структуре. Этот путь можно использовать для определения того, когда вы находитесь в месте, где требуется обновление.

Общая стратегия заключается в том, чтобы читать в токенах, изменять их, если требуется, а затем записывать их снова.