2012-03-26 50 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