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?

InformationsquelleAutor Ryan Taylor | 2010-07-08
Schreibe einen Kommentar