#c# #json
Вопрос:
Если бы у меня был объект Json:
{ "data":{ "SomeArray":[ { "name":"test1" }, { "name":"test2" }, { "name":"test3" } ] } }
И этот объект анализируется с помощью Jobject.Parse(jsonString);
Как бы я добавил поле, в data
котором содержится количество элементов в массиве, которые будут перенаправлены в другую систему. Количество уже подсчитано. Мне просто нужно добавить это вот так:
{ "data":{ "Count" : 3, "SomeArray" : [
Я пытался
myJObject["data"].Add("Count",count);
Но.Добавить здесь не работает. Единственный вариант, который я вижу, — это AddAfterSelf()
Неужели нет способа просто добавить простую пару значений ключа без необходимости Jproperty
сначала создавать и добавлять ее с помощью AddAfterSelf
?
Или это правильный путь: x["Data"].AddAfterSelf(new JProperty("Count", count));
Ответ №1:
Проблема здесь в том, что myJObject["data"]
возвращает JToken
объект, который является базовым классом для объекта задания.
Если вы уверены, что «данные» всегда будут объектом, вы можете сделать следующее
var data = myJObject.GetValue("data") as JObject; data.Add("Count",120);
Комментарии:
1. Как бы я затем добавил данные обратно в исходный объект задания, просто выполнив это
myJObject["data"] = data;
?2. @Bike_dotnet вы не должны этого делать. он будет автоматически присутствовать в
myJObject
, потому что это ссылочный тип данных.
Ответ №2:
Вы могли бы сделать это, используя JToken
то, что вы получаете в myJObject["data"]
качестве JObject
. Например:
var data = (JObject)myJObject["data"]; data.Add("Count", 3);