Wie kann ich am besten nutzen Json.NET zu ändern, Teile eines bestehenden JSON-Objekt?
Beispiel:
Ich habe Folgendes JSON-Objekt.
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "nyc", "type" : "MapServer"},
{"name" : "philly", "type" : "MapServer"}
]
}
Ich möchte in der Lage sein, um das entfernen eines oder mehrerer Elemente aus der services-array basierend auf dem Wert des name-Attributs. Zum Beispiel möchte ich die Suche nach name="nyc" und entfernen Sie das Objekt aus dem array.
{"name" : "nyc", "type" : "MapServer"}
Das Ergebnis ist ein Objekt, das aussieht wie dieses:
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "philly", "type" : "MapServer"}
]
}
War ich in der Lage, neues zu schaffen JSON-Objekt relativ leicht und ich kann Lesen, bestehenden. Allerdings bin ich mit schwierig die Bestimmung der besten Art und Weise zum ändern eines vorhandenen JSON-Objekt. Besonders, wenn es sich um Abfragen für bestimmte Objekte innerhalb des JSON-Objekts.
Einer Methode, die ich aufgedeckt wurden (speziell zu diesem Beispiel) ist für den Wiederaufbau Teile der JSON, das möchte ich geändert und ersetzen die Token wie nötig. Aber ich denke, es gibt einen besseren Weg. Dieser code ist unten dargestellt.
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();
Wie kann ich am besten nutzen Json.NET zu ändern, Teile eines bestehenden JSON-Objekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe noch zu bestimmen, eine Alternative Methode zum ändern eines vorhandenen JSON als das, was war in der ursprünglichen Frage. Wenn Sie einen besseren Weg, Oberflächen, werde ich gern hinnehmen, wie die richtige Antwort.
In der Zwischenzeit die Lösung, die ich umgesetzt haben, ist der Austausch der Teile der JSON-Objekt, die ich brauche, modifiziert mit neu erstellten Objekten. Ein Beispiel ist unten gezeigt.