Comment puis-je tirer le meilleur parti de Json.NET pour modifier les parties d'un objet JSON?

Exemple:

J'ai le texte suivant objet JSON.

{"currentVersion" : "10.0", 
  "folders" : [], 
  "services" : [
    {"name" : "nyc", "type" : "MapServer"}, 
    {"name" : "philly", "type" : "MapServer"}
  ]
}

Je veux être en mesure de supprimer un ou plusieurs éléments de la prestation des services tableau basé sur la valeur de l'attribut name. Par exemple, je recherche name="nyc" et supprimer l'objet suivant de la matrice.

{"name" : "nyc", "type" : "MapServer"}

Le résultat final est un objet qui ressemble à ceci:

{"currentVersion" : "10.0", 
  "folders" : [], 
  "services" : [
    {"name" : "philly", "type" : "MapServer"}
  ]
}

J'ai été en mesure de créer de nouveaux objet JSON assez facilement et je peux lire existants. Cependant, je vais avoir de la difficulté à déterminer la meilleure façon de modifier un objet JSON. Particulièrement en ce qui concerne l'interrogation des objets spécifiques à l'intérieur de l'objet JSON.

Une méthode que j'ai découvert (spécifique à cet exemple) est de reconstruire des parties de l'JSON que je veux modifié et remplacer les jetons comme nécessaire. Cependant, je pense qu'il y a une meilleure façon. Ce code est indiqué ci-dessous.

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();

Comment puis-je tirer le meilleur parti de Json.NET pour modifier les parties d'un objet JSON?

OriginalL'auteur Ryan Taylor | 2010-07-08