Я много занимался поиском, похоже, нет статьи для этого конкретного случая.
У меня есть некоторый JSON (обратите внимание, что это JArray, а не JObject)
[
{
"Name": "Name 1",
"Icon": "Icon 1",
"Samples": [
{
"Name": "Sample 1",
},
{
"Name": "Sample 2",
},
{
"Name": "Sample 3",
}
]
},
{
"Name": "Name 2",
"Icon": "Icon 2",
"Samples": [
{
"Name": "Sample 1",
},
{
"Name": "Sample 2",
},
{
"Name": "Sample 3",
}
]
},
{
"Name": "Name 3",
"Icon": "Icon 3",
"Samples": [
{
"Name": "Sample 1",
},
{
"Name": "Sample 2",
},
{
"Name": "Sample 3",
}
]
},
]
Так что у него есть 3 уровня.Корень, который содержит «SampleCategories».«SampleCategories», который содержит некоторые элементы и список «Samples», и «Samples», который содержит много объектов.
Итак, что я по сути пытаюсь сделать здесь, это добавить объект вСписок образцов, внутри определенной SampleCategory.Например:
Я хочу добавить «Образец 4» в массив «Образцы» в «Имя 1», чтобы он выглядел так:
{
"Name": "Name 1",
"Icon": "Icon 1",
"Samples": [
{
"Name": "Sample 1",
},
{
"Name": "Sample 2",
},
{
"Name": "Sample 3",
},
{
"Name": "Sample 4",
}
]
},
Я думал, что это будет довольно легко, когдаЯ начал, но оказалось, что есть много препятствий, которые я не могу осознать.
Так что у меня есть две модели для каждого уровня, «SampleCategory» для верхнего уровня, который имеет Имя, Icon and Samples, которая относится к другой модели под названием «Samples []»
Так что я боюсь, что в этом процессе я нахожусь в затруднительном положении ... С самого начала.Я десериализовал json, сделал несколько шагов по поиску выбранной SampleCategory и создал готовый для добавления объект, и это все, что я получил ...
var categories = JsonConvert.DeserializeObject<List<SampleCategory>>(json);
var applications = categories.Find(c => c.Name.Equals("Name 1"));
var sample = new Sample
{
Name = "Sample 4",
};
IПо-видимому, не удается найти какой-либо способ добавления нового «образца» в список «Образцы» выбранной категории «Образец».Я даже пытался добавить к объектному пути напрямую , путь которого я получил используя это:
JObject jo = jsonArray.Children<JObject>().FirstOrDefault(o => o["Name"] != null && o["Name"].ToString() == "Name 1");
Но, похоже, нет способа добавить массив в видеЯ полагаю, это статическая длина?
Как лучше всего модифицировать JSON следующим образом?
Документация (https://www.newtonsoft.com/json/help/html/ModifyJson.htm) предлагает несколько способов сделать это при игре с объектами JObjects, но не предлагает способ сделать это с вложенными объектами внутри JArrays.
Может кто-нибудь помочь или предложить какие-то методы для этого? Я уверен, что это, вероятно, просто, но я прохожу цикл, пытаясь выяснить это.