C# json转换为类并反序列化

C# json转换为类并反序列化,c#,json,C#,Json,我试图反序列化通过api调用获得的复杂json。我有两个问题 这就是我试图在站点上转换为类的json { “信息”:{ “总计数”:2, “当前页面总数”:2, “每页最大值”:500, “当前页码”:1, “总页数”:1 }, “实体数据”:{ “实体名称”:“\u05de\u05d0\u05d9\u05e8”, “实体数据名称”:“e_130”, “权限”:{ “类型”:“完整”, “代码”:“1” }, “视图”:“数据表” }, “数据”:[ { “实例数据”:{ “_id”:“60a3

我试图反序列化通过api调用获得的复杂json。我有两个问题

  • 这就是我试图在站点上转换为类的json
  • {
    “信息”:{
    “总计数”:2,
    “当前页面总数”:2,
    “每页最大值”:500,
    “当前页码”:1,
    “总页数”:1
    },
    “实体数据”:{
    “实体名称”:“\u05de\u05d0\u05d9\u05e8”,
    “实体数据名称”:“e_130”,
    “权限”:{
    “类型”:“完整”,
    “代码”:“1”
    },
    “视图”:“数据表”
    },
    “数据”:[
    {
    “实例数据”:{
    “_id”:“60a3a82a956ecd3228739ced”,
    “插入时间戳”:“2021-05-18T14:42:34+0300”,
    “字段组”:[
    {
    “字段组数据”:{
    “组名称”:“\u05e1\u05e4\u05e8\u05d8\u05dc\u05e4\u05d5\u05e0\u05d9\u05dd”,
    “组数据名称”:“g_353”,
    “组id”:“353”,
    “可重复组”:“0”,
    “权限”:{
    “类型”:“完整”,
    “代码”:“1”
    }
    },
    “字段和数据”:[
    [
    {
    “字段名称”:“\u05e9\u05dd\u05e4\u05e8\u05d8\u05d9”,
    “字段类型名称”:“输入文本”,
    “字段数据名称”:“fld\U 2372”,
    “占位符”:空,
    “默认值”:“,
    “作为指定人行事”:,
    “自定义_验证”:{
    “无法编辑”:“0”,
    “数据类型”:“0”
    },
    “值”:“\u05de\u05d0\u05d9\u05e8”,
    “组索引”:0
    },
    {
    “字段名称”:“\u05e9\u05dd\u05de\u05e9\u05e4\u05d7\u05d4”,
    “字段类型名称”:“输入文本”,
    “字段数据名称”:“fld\U 2373”,
    “占位符”:空,
    “默认值”:“,
    “作为指定人行事”:,
    “自定义_验证”:{
    “无法编辑”:“0”,
    “数据类型”:“0”
    },
    “值”:“\u05e8\u05d5\u05d8\u05e4\u05dc\u05d9\u05d9\u05e9”,
    “组索引”:0
    },
    {
    “字段名称”:“\u05d9\u05d9\u05e9\u05d5\u05d1\u05de\u05d2\u05d5\u05e8\u05d9\u05dd”,
    “字段类型名称”:“选择列表”,
    “字段数据名称”:“fld\U 2374”,
    “占位符”:空,
    “默认值”:“,
    “可能的值”:“[\”\\u05db\\u05e4\\u05e8\\u05e1\\u05d1\\u05d0\”,\“\\u05ea\\u05dc\\u05d0\\u05d1\\u05d9\\u05d1\”,\“\\u05e2\\u05d6\\u05d4\”,\“\\u05d9\\u05e8\\u05d5\\u05e9\\u05dc\\u05d9\\u05dd\”,
    “作为指定人行事”:,
    “自定义_验证”:{
    “无法编辑”:“0”,
    按字母顺序排列:“0”
    },
    “值”:“\u05db\u05e4\u05e8\u05e1\u05d1\u05d0”,
    “组索引”:0
    },
    {
    “字段名称”:“\u05d8\u05dc\u05e4\u05d5\u05df”,
    “字段类型名称”:“输入文本”,
    “字段数据名称”:“fld\U 2375”,
    “占位符”:空,
    “默认值”:“,
    “作为指定人行事”:,
    “自定义_验证”:{
    “无法编辑”:“0”,
    “数据类型”:“0”
    },
    “值”:“055098393”,
    “组索引”:0
    },
    {
    “字段名称”:“\u05de\u05d9\u05d9\u05dc”,
    “字段类型名称”:“输入电子邮件”,
    “字段数据名称”:“fld\U 2376”,
    “占位符”:空,
    “默认值”:“,
    “作为指定人行事”:,
    “自定义_验证”:{
    无法进行编辑:“0”
    },
    “值”:meir@arma.co.il",
    “组索引”:0
    }
    ]
    ]
    }
    ]
    },
    “单一权限”:空
    },
    {
    “实例数据”:{
    “_id”:“60a3a7e6788c2124f12b5370”,
    “插入时间戳”:“2021-05-18T14:
    
    public class FieldGroup
    {
        public FieldGroupData field_group_data { get; set; }
        public List<List<>> fields_data { get; set; }
    }
    
    ...
    "fields_data": [
        [
            {
                "field_name": "\u05e9\u05dd \u05e4\u05e8\u05d8\u05d9",
                "field_type_name": "input-text",
                "field_data_name": "fld_2372",
                "placeholder": null,
                "default_value": "",
                "act_as_assign": "",
                "custom_validation": {
                    "unable_to_edit": "0",
                    "data_type": "0"
                },
                "value": "\u05de\u05d0\u05d9\u05e8",
                "group_index": 0
            }
            ...
    
    Root root = JsonSerializer.Deserialize<Root>(json); 
    
        {
            "field_name": "\u05e9\u05dd \u05e4\u05e8\u05d8\u05d9",
            "field_type_name": "input-text",
            "field_data_name": "fld_2372",
            "placeholder": null,
            "default_value": "",
            "act_as_assign": "",
            "custom_validation": {
                "unable_to_edit": "0",
                "data_type": "0"
            },
            "value": "\u05de\u05d0\u05d9\u05e8",
            "group_index": 0
        }
    
    //The charp object for the json above
    
    public class CustomValidation
    {
        public string unable_to_edit { get; set; }
        public string data_type { get; set; }
    }
    
    public class Field
    {
        public string field_name { get; set; }
        public string field_type_name { get; set; }
        public string field_data_name { get; set; }
        public object placeholder { get; set; }
        public string default_value { get; set; }
        public string act_as_assign { get; set; }
        public CustomValidation custom_validation { get; set; }
        public string value { get; set; }
        public int group_index { get; set; }
    }
    
    //then correct "fields_data" type (List<List<>>) to "List<List<Field>>" 
    
    // Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 
    public class Info
    {
        public int total_count { get; set; }
        public int current_page_total_count { get; set; }
        public int max_each_page { get; set; }
        public int current_page_number { get; set; }
        public int total_pages { get; set; }
    }
    
    public class Permissions
    {
        public string type { get; set; }
        public string code { get; set; }
    }
    
    public class EntityData
    {
        public string entity_name { get; set; }
        public string entity_data_name { get; set; }
        public Permissions permissions { get; set; }
        public string view { get; set; }
    }
    
    public class FieldGroupData
    {
        public string group_name { get; set; }
        public string group_data_name { get; set; }
        public string group_id { get; set; }
        public string repeatable_group { get; set; }
        public Permissions permissions { get; set; }
    }
    
    public class FieldGroup
    {
        public FieldGroupData field_group_data { get; set; }
        //correct "fields_data" type (List<List<>>) to "List<List<Field>>"
        //public List<List<>> fields_data { get; set; }
        public List<List<Field>> fields_data { get; set; }//List<List<Field>>
    }
    
    public class InstanceData
    {
        public string _id { get; set; }
        public DateTime insertTimestamp { get; set; }
        public List<FieldGroup> field_groups { get; set; }
    }
    
    public class Datum
    {
        public InstanceData instance_data { get; set; }
        public object single_permission { get; set; }
    }
    
    public class Root
    {
        public Info info { get; set; }
        public EntityData entity_data { get; set; }
        public List<Datum> data { get; set; }
    }