2012-03-26 15 views
0

ich brauche die json Zeichenfolge am Boden zu analysieren, so dass die Unterkette das dritte Ebene Kind darstelltLINQ-to-JSON- oder String-to-Json

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

entfernt wird.

Original-JSON:

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

Vielen Dank für Ihre Hilfe.

Antwort

2

Sie könnten z.B. Json.NET dafür. Zuerst ein Objekt aus Ihrem json erstellen (ich verlasse mich auf der json Snippet Sie zur Verfügung gestellt):

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

Dann durch das Objekt iterieren, finden die Category Eigenschaft, und sein letztes Kind:

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

dann entfernen Sie die Knoten gefunden:

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

Und schließlich serialisiert das Objekt in einen String:

var repairedJson = JsonConvert.SerializeObject(obj); 

Dies wird Ihnen das nächste Ergebnis:

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

Danke Alex. Die Methode, die Sie vorschlagen, veranlasste mich dazu zu denken, dass ich das ursprüngliche Problem angeben sollte. Und das ursprüngliche Problem besteht darin, jedes Objekt zu JSON tief in das zweite komplexe Objekt zu analysieren. Medienfeld wird nicht als solches enthalten sein. Ich werde die Namen der Eigenschaften nicht kennen, wenn ich nicht die Reflektion anwende, aber das würde eine weitere Operation hinzufügen. Gibt es eine direkte Möglichkeit, ein Objekt in JSON serialisierende Eigenschaften der ersten Ebene zu analysieren, und die zweite, wenn sie einfach sind, dritte Ebene und tiefer sind vollständig ausgeschlossen. Vielen Dank. – itisinteresting

+0

@itisinteresting, ich fürchte, du müsstest deinen eigenen 'JsonConverter' in diesem Fall schreiben – Alex

+0

Vielleicht hast du recht :) Danke Alex. – itisinteresting

Verwandte Themen