Добавление данных в json файл в С#

Вопрос: Как я буду добавлять данные для добавления? У меня есть это: { "13232": [ "2012952" ] } И я хочу добавить к нему другой объект, например: { "13232": [ "2012952" ], "19213": [ "2016086" ] } Это код, который я использую: JArray array = new JArray(); array.Add(Itemid); JObject o = new JObject(); o[Userid] =

Вопрос:

Как я буду добавлять данные для добавления? У меня есть это:

{ «13232»: [ «2012952» ] }

И я хочу добавить к нему другой объект, например:

{ «13232»: [ «2012952» ], «19213»: [ «2016086» ] }

Это код, который я использую:

JArray array = new JArray(); array.Add(Itemid); JObject o = new JObject(); o[Userid] = array; string json = o.ToString(Formatting.Indented); //i know this keeps appending text but how would i append it inside the { and }? File.AppendAllText(«E:/media.json», json);

Я в буквальном смысле понятия не имею, как продолжать добавлять его, но, возможно, у кого-то еще есть?

Лучший ответ:

Вы не сможете использовать операции добавления файлов для этого. Операции добавления файлов могут только добавлять текст в конец, они не могут вставлять текст в какой-то точке посередине. Это делает невозможным использование file-append для сохранения JSON.

У вас есть два варианта, о которых я могу думать:

  1. Прочитайте весь файл в объекте, добавьте свой объект и перепишите весь файл (низкая производительность)
  2. Откройте файл для чтения/записи, проанализируйте его до тех пор, пока не дойдете до закрывающей фигурной скобки, а затем напишите оставшиеся данные, а затем напишите тесную фигурную скобку (не тривиальную)

Ответ №1

Я рекомендую вам использовать Newtonsoft Json lib, доступный как пакет nuget.

Вы можете сделать класс модели для представления на json-узле, тогда вы можете де-сериализовать вас Json для этой модели и построить массив, содержащий новый элемент в конце, а затем повторно сериализовать его на json after.

Посмотрите эту страницу MSDN об этом: https://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx

Редактировать: актуальная документация NewtonSoft

Поэтапно: 1 Уничтожить коллекцию

2: И новый экземпляр класса с listName.Add(className);

3: Повторная сортировка коллекции

Ответ №2

Самый безопасный подход – read-update-rewrite (применяется к JSON и XML-формату, поскольку они не поддерживают добавление).

Следующая опция, если вы можете жить с недействительным JSON, – это просто объединить фрагменты JSON с кодом, который у вас есть, а затем использовать SupportMultipleContent в JsonReader для чтения фрагментов. Чтение нескольких фрагментов с помощью JsonReader

Если эти подходы не работают и ваш формат фиксирован – найдите позицию последнего ] в файле, найдите там поток и напишите новые элементы массива и добавьте ]}.

Оцените статью
Добавить комментарий