Ejemplo:¿Cómo puedo utilizar Json.NET para modificar partes de un objeto JSON existente?
Tengo el siguiente objeto JSON.
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "nyc", "type" : "MapServer"},
{"name" : "philly", "type" : "MapServer"}
]
}
Quiero ser capaz de eliminar uno o más elementos de la matriz de los servicios basados en el valor del atributo name. Por ejemplo, quiero buscar name = "nyc" y eliminar el siguiente objeto de la matriz.
{"name" : "nyc", "type" : "MapServer"}
El resultado final es un objeto que se parece a esto:
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "philly", "type" : "MapServer"}
]
}
he sido capaz de crear nuevo objeto JSON con bastante facilidad y puedo leer los ya existentes. Sin embargo, estoy teniendo dificultades para determinar la mejor manera de modificar un objeto JSON existente. Particularmente en lo que se refiere a la consulta de objetos específicos dentro del objeto JSON.
Un método que he descubierto (específico para este ejemplo) es reconstruir partes del JSON que deseo modificar y reemplazar los tokens según sea necesario. Sin embargo, tengo que pensar que hay una mejor manera. Este código se muestra a continuación.
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();
¿Cómo puedo utilizar Json.NET para modificar partes de un objeto JSON existente?