从 json 动态生成 c# 类

本文关键字:json 动态 | 更新日期: 2023-09-27 17:55:15

我通常使用 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 个或更多的深度。

从 json 动态生成 c# 类

你不需要

动态地解冻你的类。这应该有效:

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);

您可以随时使用 Newtonsoft.Json

例如

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

等等...

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