2012-03-26 86 views
0

我需要在底部解析JSON字符串,這樣子串表示第三級子LINQ到JSON或字符串到JSON

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

被刪除。

原始JSON:

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

謝謝您的幫助。

回答

2

您可以使用例如Json.NET爲此。首先從您的JSON創建一個對象(我靠片斷您提供的JSON):

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

然後通過你的對象迭代,找到Category屬性,它的最後一個孩子:

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

然後刪除找到的節點:

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

最後,序列化對象轉換成字符串:

var repairedJson = JsonConvert.SerializeObject(obj); 

這會給你的下一個結果:

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

謝謝亞歷克斯。你所建議的方法促使我認爲我應該說明最初的問題。原來的問題是將任何對象解析爲JSON到深層的第二個複雜對象。媒體領域將不會被包括在內。除非我應用反射,否則我不會知道這些屬性的名稱,但會增加另一個操作。有沒有直接的方法來解析一個對象到JSON序列化一級屬性,第二個如果他們是簡單的,第三級和更深被排除在外。謝謝。 – itisinteresting 2012-03-26 23:42:23

+0

@itisinteresting,恐怕你必須在這種情況下寫你自己的'JsonConverter' – Alex 2012-03-27 13:10:02

+0

也許你是對的:)謝謝亞歷克斯。 – itisinteresting 2012-03-28 13:06:21