2012-03-26 3 views
0

je dois analyser la chaîne JSON en bas de sorte que la sous-chaîne représentant le troisième enfant de niveauLINQ to JSON ou String-à-Json

,"Media":{"ImageName":"Winter Twinkle"} 

est enlevé.

JSON Original:

[{ 
    "BusinessID" : 1, 
    "BusinessName" : "Artland Painters", 
    "Category" : { 
        "ClassificationAlias" : "beauty-art", 
        "ClassificationName" : "Beauty Art", 
        "Media"    : { 
               "ImageName":"Winter Twinkle" 
              } 
        } 
}] 

Merci pour votre aide.

Répondre

2

Vous pouvez utiliser par ex. Json.NET pour cela. Tout d'abord créer un objet à partir de votre JSON (je compte sur les JSON vous extrait de code fourni):

var obj = (JArray)JsonConvert.DeserializeObject(json); 

itérer Puis, à travers votre objet, recherchez la propriété Category, et son dernier enfant:

var media = obj.Select(t => t["Category"].Last); 

retirez ensuite les noeuds trouvés:

foreach (var item in media) 
    item.Remove(); 

Et, enfin, sérialiser l'objet dans une chaîne:

var repairedJson = JsonConvert.SerializeObject(obj); 

Cela vous donnera le résultat suivant:

[{"BusinessID":1,"BusinessName":"Artland Painters","Category":{"ClassificationAlias":"beauty-art","ClassificationName":"Beauty Art"}}] 
+0

Merci Alex. La méthode que vous suggérez m'a incité à penser que je devrais énoncer le problème original. Et le problème original est d'analyser n'importe quel objet à JSON au deuxième objet complexe profond. Le champ média ne sera pas inclus en tant que tel. Je ne connaîtrai pas les noms des propriétés, à moins que j'applique une réflexion, mais cela ajouterait une autre opération. Existe-t-il un moyen direct d'analyser un objet en JSON sérialisant les propriétés de premier niveau et le second si elles sont simples, le troisième niveau et le plus profond sont entièrement exclus. Je vous remercie. – itisinteresting

+0

@ ititéressant, je crains que vous deviez écrire votre propre «JsonConverter» dans ce cas – Alex

+0

Peut-être que vous avez raison :) Merci Alex. – itisinteresting