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
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas encore de déterminer un autre moyen de modifier un existant, JSON que ce qui est prévu dans la question d'origine. Si une meilleure façon surfaces je serai heureux d'accepter que comme la réponse correcte.
En attendant, la solution que j'ai mis en œuvre est de remplacer les pièces de l'objet JSON j'ai besoin de modifié avec des objets nouvellement créés. Un exemple est montré ci-dessous.
OriginalL'auteur Ryan Taylor