Пример:
У меня есть следующий объект JSON.
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "nyc", "type" : "MapServer"},
{"name" : "philly", "type" : "MapServer"}
]
}
Я хочу иметь возможность удалить один или несколько элементов из массива служб на основе значения атрибута name. Например, я хочу найти name = "nyc" и удалить следующий объект из массива.
{"name" : "nyc", "type" : "MapServer"}
Конечный результат - это объект, который выглядит следующим образом:
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "philly", "type" : "MapServer"}
]
}
Мне удалось довольно легко создать новый объект JSON, и я могу читать существующие. Тем не менее, у меня трудно определить лучший способ изменить существующий объект JSON. Особенно это касается запросов к конкретным объектам в объекте JSON.
Один метод, который я раскрыл (специфичный для этого примера), состоит в том, чтобы перестроить части JSON, которые я хочу изменить, и заменить токены по мере необходимости. Тем не менее, я должен думать, что есть лучший способ. Этот код показан ниже.
string json = @"{""currentVersion"" : ""10.0"",
""folders"" : [],
""services"" : [
{""name"" : ""nyc"", ""type"" : ""MapServer""},
{""name"" : ""philly"", ""type"" : ""MapServer""}
]
}";
string[] keepList = new string[] { "nyc" };
JObject o = JObject.Parse(json);
JArray services = (JArray)o["services"];
JArray newServices = new JArray();
foreach (JToken service in services)
{
foreach (string keeper in keepList)
{
if ((string)service["name"] == keeper)
{
newServices.Add(service);
break;
}
}
}
services.Replace(newServices);
string output = o.ToString();
Как лучше всего использовать Json.NET для изменения частей существующего объекта JSON?