Как я буду добавлять данные для добавления? У меня есть это:
{
"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.
У вас есть два варианта, о которых я могу думать:
Я рекомендую вам использовать 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);
Самый безопасный подход - read-update-rewrite (применяется к JSON и XML-формату, поскольку они не поддерживают добавление).
Следующая опция, если вы можете жить с недействительным JSON, - это просто объединить фрагменты JSON с кодом, который у вас есть, а затем использовать SupportMultipleContent
в JsonReader
для чтения фрагментов. Чтение нескольких фрагментов с помощью JsonReader
Если эти подходы не работают и ваш формат фиксирован - найдите позицию последнего ]
в файле, найдите там поток и напишите новые элементы массива и добавьте ]}
.
JArray
, добавить новые данные в этотJArray
и перезаписать старый файл обновленными данными.