从json动态生成c#类

时间:2014-03-31 14:12:12

标签: c# json silverlight windows-phone-7 mvvm

我通常使用json2csharp为c#生成json类。但我确实有问题。我的json有这样的动态深度

    {
        "kategori": [
            {
                "id": "1",
                "namakategori": "Tips & Trick",
                "parent_id": "0",
                "children": [
                    {
                        "id": "348",
                        "namakategori": "Fotografi",
                        "parent_id": "1",
                        "children": []
                    },
                    {
                        "id": "370",
                        "namakategori": "Hacking",
                        "parent_id": "1",
                        "children": []
                    }
                ]
            },
     {
                "id": "12",
                "namakategori": "Aplikasi",
                "parent_id": "0",
                "children": [
                    {
                        "id": "13",
                        "namakategori": "Tools",
                        "parent_id": "12",
                        "children": [
                                     {
                                       "id": "14",
                                      "namakategori": "Toolsorder",
                                       "parent_id": "13",
                                       "children":[]
                                      },
                                     ]
                             },
                          ]
                       },
             ]
}

那么如何动态生成json类,以便它可以用于我的json?在上面的例子中,我有3个深度。但如果我去不同的页面,它可能有4个或更多的深度。

2 个答案:

答案 0 :(得分:1)

您不需要动态声明您的课程 。这应该有效:

public class Child
{
    public string id { get; set; }
    public string namakategori { get; set; }
    public string parent_id { get; set; }
    public List<Child> children { get; set; } // <-- See this
}

public class RootObj
{
    public List<Child> kategori { set; get; }
}

要反序列化我将使用Json.Net

 var res = JsonConvert.DeserializeObject<RootObj>(json);

答案 1 :(得分:0)

您可以随时使用Newtonsoft.Json

For Instance,

JObject result = (JObject) JsonConvert.DeserializeObject(yourJsonDataHere);
var katObject = result.Property("kategori").Value;

依旧......

PS:不确定WP7是否支持Newtonsoft.Json。