Вопрос:
Как я буду добавлять данные для добавления? У меня есть это:
{ «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
Я рекомендую вам использовать 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
Если эти подходы не работают и ваш формат фиксирован – найдите позицию последнего ] в файле, найдите там поток и напишите новые элементы массива и добавьте ]}.