编辑代码

using System;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
        string json = @"
        {
            ""result_code"": ""0"",
            ""result_info"": ""Success"",
            ""data"": {
                ""model_list_on_product"": {
                    ""com.proximabeta.nikke.jw300"": {
                        ""list"": [
                            {
                                ""model_type"": 1,
                                ""activity_id"": ""activity123"",
                                ""model_id"": ""model123"",
                                ""provide_offer_id"": ""offer123"",
                                ""model_detail"": {
                                    ""gift_rule_info"": {
                                        ""judge_mode"": 1,
                                        ""action_mode"": 1,
                                        ""action_time"": 1,
                                        ""gift_level_list"": [
                                            {
                                                ""money_flag"": true,
                                                ""number_flag"": true,
                                                ""pid_flag"": true,
                                                ""money_total"": 100,
                                                ""number_total"": 10,
                                                ""buy_rule_products"": {
                                                    ""com.proximabeta.nikke.jw300"": 1
                                                },
                                                ""gift_products"": {
                                                    ""PRO-V0VEE7SDMEFJ"": 1,
                                                    ""PRO-VQ1JJIUKHGBS"": 1
                                                },
                                                ""level_id"": ""fb1dd56b-8032-40"",
                                                ""qualification_config"": {},
                                                ""remain_limit"": {
                                                    ""PRO-V0VEE7SDMEFJ"": {
                                                        ""product_quata"": {
                                                            ""day"": -1,
                                                            ""week"": -1,
                                                            ""month"": -1,
                                                            ""total"": -1
                                                        },
                                                        ""account_quata"": {
                                                            ""day"": -1,
                                                            ""week"": -1,
                                                            ""month"": -1,
                                                            ""total"": 1
                                                        }
                                                    },
                                                    ""PRO-VQ1JJIUKHGBS"": {
                                                        ""product_quata"": {
                                                            ""day"": -1,
                                                            ""week"": -1,
                                                            ""month"": -1,
                                                            ""total"": -1
                                                        },
                                                        ""account_quata"": {
                                                            ""day"": -1,
                                                            ""week"": -1,
                                                            ""month"": -1,
                                                            ""total"": -1
                                                        }
                                                    }
                                                },
                                                ""level_limit"": {
                                                    ""PRO-V0VEE7SDMEFJ"": {
                                                        ""dimension_mean"": {
                                                            ""dim1"": ""dim"",
                                                            ""dim2"": ""dim"",
                                                            ""dim3"": ""dim"",
                                                            ""dim4"": ""dim""
                                                        },
                                                        ""limit_conf_value"": {
                                                            ""pro_quata"": {
                                                                ""day"": -1,
                                                                ""week"": -1,
                                                                ""month"": -1,
                                                                ""total"": -1
                                                            },
                                                            ""acct_quata"": {
                                                                ""day"": -1,
                                                                ""week"": -1,
                                                                ""month"": -1,
                                                                ""total"": 1
                                                            }
                                                        }
                                                    },
                                                    ""PRO-VQ1JJIUKHGBS"": {
                                                        ""dimension_mean"": {
                                                            ""dim1"": ""dim"",
                                                            ""dim2"": ""dim"",
                                                            ""dim3"": ""dim"",
                                                            ""dim4"": ""dim""
                                                        },
                                                        ""limit_conf_value"": {
                                                            ""pro_quata"": {
                                                                ""day"": -1,
                                                                ""week"": -1,
                                                                ""month"": -1,
                                                                ""total"": -1
                                                            },
                                                            ""acct_quata"": {
                                                                ""day"": -1,
                                                                ""week"": -1,
                                                                ""month"": -1,
                                                                ""total"": -1
                                                            }
                                                        }
                                                    }
                                                },
                                                ""is_open_level_limit"": true
                                            }
                                        ],
                                        ""ext_attr"": {
                                            ""LadderProductNum"": """",
                                            ""MpMidasDefaultActivityFlag"": ""mp_midas_default_activity_flag_off"",
                                            ""accumlate"": ""1"",
                                            ""mp_model_tag"": ""single_rule""
                                        },
                                        ""cumlt_config"": {}
                                    }
                                }
                            }
                        ]
                    }
                },
                ""model_list"": []
            }
        }";

        try
        {
            Promotions promotions = JsonConvert.DeserializeObject<Promotions>(json);
            Console.WriteLine("Deserialization successful!");
            Console.WriteLine("Result Code: " + promotions.ResultCode);
            Console.WriteLine("Result Info: " + promotions.ResultInfo);
            Console.WriteLine("Data: " + JsonConvert.SerializeObject(promotions.Data, Formatting.Indented));
        }
        catch (Exception ex)
        {
            Console.WriteLine("Deserialization failed: " + ex.Message);
        }
    }
}

[Serializable]
public class Promotions
{
    [JsonProperty("result_code")]
    public string ResultCode { get; set; }

    [JsonProperty("result_info")]
    public string ResultInfo { get; set; }

    [JsonProperty("data")]
    public PromotionData Data { get; set; }

    public bool Success() => int.TryParse(ResultCode, out int result) && result == 0;

    public Promotions(string resultCode, string resultInfo, PromotionData data)
    {
        ResultCode = resultCode;
        ResultInfo = resultInfo;
        Data = data;
    }
}

[Serializable]
public class PromotionData
{
    [JsonProperty("model_list_on_product")]
    public Dictionary<string, ModelsOfProduct> ModelListOnProduct { get; set; }

    [JsonProperty("model_list")]
    public ModelInfo[] ModelList { get; set; }
}

[Serializable]
public class ModelsOfProduct
{
    [JsonProperty("list")]
    public ModelInfo[] List { get; set; }
}

[Serializable]
public class ModelInfo
{
    [JsonProperty("model_type")]
    public int ModelType { get; set; }

    [JsonProperty("activity_id")]
    public string ActivityId { get; set; }

    [JsonProperty("model_id")]
    public string ModelId { get; set; }

    [JsonProperty("provide_offer_id")]
    public string ProvideOfferId { get; set; }

    [JsonProperty("model_detail")]
    public GiftRuleData ModelDetail { get; set; }
}

[Serializable]
public class GiftRuleData
{
    [JsonProperty("gift_rule_info")]
    public GiftRuleConf GiftRuleInfo { get; set; }

    [JsonProperty("accumulate_config")]
    public AccumulateConfig AccumulateConfig { get; set; }

    [JsonProperty("limited_conf")]
    public LimitedConf LimitedConf { get; set; }

    [JsonProperty("model_conf")]
    public ModelConfig ModelConf { get; set; }

    [JsonProperty("limit_remain_data_info_list")]
    public LimitRemainDataInfo[] LimitRemainDataInfoList { get; set; }

    [JsonProperty("qualification_conf")]
    public QualificationConfig QualificationConf { get; set; }

    [JsonProperty("app_id")]
    public string AppId { get; set; }

    [JsonProperty("activity_id")]
    public string ActivityId { get; set; }

    [JsonProperty("model_id")]
    public string ModelId { get; set; }
}

[Serializable]
public class QualificationConfig
{
    [JsonProperty("rule_list")]
    public string[] RuleList { get; set; }
}

[Serializable]
public class AccumulateConfig
{
    [JsonProperty("accumulate_value")]
    public decimal AccumulateValue { get; set; }
}

[Serializable]
public class GiftRuleConf
{
    [JsonProperty("judge_mode")]
    public int JudgeMode { get; set; }

    [JsonProperty("action_mode")]
    public int ActionMode { get; set; }

    [JsonProperty("action_time")]
    public int ActionTime { get; set; }

    [JsonProperty("gift_level_list")]
    public LevelRule[] GiftLevelList { get; set; }

    [JsonProperty("gift_ladder_list")]
    public LadderRule[] LadderRule { get; set; }

    [JsonProperty("gift_ladder_pattern")]
    public int GiftLadderPattern { get; set; }

    [JsonProperty("seq_id")]
    public string SeqId { get; set; }

    [JsonProperty("ladder_product_num")]
    public Dictionary<string, int> LadderProductNum { get; set; }

    [JsonProperty("cumlt_config")]
    public CumltConfig CumltConfig { get; set; }
}

[Serializable]
public class LadderRule
{
    [JsonProperty("sequence")]
    public int Sequence { get; set; }

    [JsonProperty("money_flag")]
    public bool MoneyFlag { get; set; }

    [JsonProperty("number_flag")]
    public bool NumberFlag { get; set; }

    [JsonProperty("pid_flag")]
    public bool PidFlag { get; set; }

    [JsonProperty("cumulative_flag")]
    public bool CumulativeFlag { get; set; }

    [JsonProperty("begin_money")]
    public decimal BeginMoney { get; set; }

    [JsonProperty("end_money")]
    public decimal EndMoney { get; set; }

    [JsonProperty("begin_number")]
    public int BeginNumber { get; set; }

    [JsonProperty("end_number")]
    public int EndNumber { get; set; }

    [JsonProperty("product_id")]
    public string ProductId { get; set; }

    [JsonProperty("begin_num_pid")]
    public int BeginNumPid { get; set; }

    [JsonProperty("end_num_pid")]
    public int EndNumPid { get; set; }

    [JsonProperty("begin_accumulation_value")]
    public decimal BeginAccumulationValue { get; set; }

    [JsonProperty("end_accumulation_value")]
    public decimal EndAccumulationValue { get; set; }

    [JsonProperty("ladder_gift_products")]
    public Dictionary<string, decimal> LadderGiftProducts { get; set; }

    [JsonProperty("gift_proportion")]
    public decimal GiftProportion { get; set; }

    [JsonProperty("ladder_id")]
    public string LadderId { get; set; }

    [JsonProperty("qualification_config")]
    public QualificationConfig QualificationConfig { get; set; }

    [JsonProperty("ladder_limit")]
    public Dictionary<string, ResourceConfInfo> LadderLimit { get; set; }

    [JsonProperty("is_open_ladder_limit")]
    public bool? IsOpenLadderLimit { get; set; }

    [JsonProperty("products_proportion")]
    public Dictionary<string, decimal> ProductsProportion { get; set; }

    [JsonProperty("remain_limit")]
    public Dictionary<string, LimitRemainDataInfo> RemainLimit { get; set; }
}

[Serializable]
public class ResourceConfInfo
{
    [JsonProperty("dimension_mean")]
    public DimensionMean DimensionMean { get; set; }

    [JsonProperty("limit_conf_value")]
    public LimitConfValue LimitConfValue { get; set; }
}

[Serializable]
public class LimitNum
{
    [JsonProperty("value")]
    public int Value { get; set; }
}

[Serializable]
public class LimitConfValue
{
    [JsonProperty("activity_feq")]
    public LimitNum ActivityFeq { get; set; }

    [JsonProperty("acct_feq")]
    public LimitNum AcctFeq { get; set; }

    [JsonProperty("pro_quata")]
    public LimitNum ProQuata { get; set; }

    [JsonProperty("acct_quata")]
    public LimitNum AcctQuata { get; set; }
}

[Serializable]
public class CumltConfig
{
    [JsonProperty("dimension_key1")]
    public string DimensionKey1 { get; set; }

    [JsonProperty("dimension_key2")]
    public string DimensionKey2 { get; set; }

    [JsonProperty("dimension_key3")]
    public string DimensionKey3 { get; set; }

    [JsonProperty("dimension_key4")]
    public string DimensionKey4 { get; set; }
}

[Serializable]
public class LevelRule
{
    [JsonProperty("money_flag")]
    public bool MoneyFlag { get; set; }

    [JsonProperty("number_flag")]
    public bool NumberFlag { get; set; }

    [JsonProperty("pid_flag")]
    public bool PidFlag { get; set; }

    [JsonProperty("money_total")]
    public decimal MoneyTotal { get; set; }

    [JsonProperty("number_total")]
    public int NumberTotal { get; set; }

    [JsonProperty("buy_rule_products")]
    public Dictionary<string, int> BuyRuleProducts { get; set; }

    [JsonProperty("gift_products")]
    public Dictionary<string, int> GiftProducts { get; set; }

    [JsonProperty("level_id")]
    public string LevelId { get; set; }

    [JsonProperty("qualification_config")]
    public QualificationConfig QualificationConfig { get; set; }

    [JsonProperty("remain_limit")]
    public Dictionary<string, RemainLimit> RemainLimit { get; set; }

    [JsonProperty("level_limit")]
    public Dictionary<string, LevelLimit> LevelLimit { get; set; }

    [JsonProperty("is_open_level_limit")]
    public bool IsOpenLevelLimit { get; set; }
}

[Serializable]
public class RemainLimit
{
    [JsonProperty("product_quata")]
    public Quota ProductQuota { get; set; }

    [JsonProperty("account_quata")]
    public Quota AccountQuota { get; set; }
}

[Serializable]
public class LevelLimit
{
    [JsonProperty("dimension_mean")]
    public DimensionMean DimensionMean { get; set; }

    [JsonProperty("limit_conf_value")]
    public LimitConfValue LimitConfValue { get; set; }
}

[Serializable]
public class Quota
{
    [JsonProperty("day")]
    public int Day { get; set; }

    [JsonProperty("week")]
    public int Week { get; set; }

    [JsonProperty("month")]
    public int Month { get; set; }

    [JsonProperty("total")]
    public int Total { get; set; }
}

[Serializable]
public class DimensionMean
{
    [JsonProperty("dim1")]
    public string Dim1 { get; set; }

    [JsonProperty("dim2")]
    public string Dim2 { get; set; }

    [JsonProperty("dim3")]
    public string Dim3 { get; set; }

    [JsonProperty("dim4")]
    public string Dim4 { get; set; }
}

[Serializable]
public class LimitedConf
{
    [JsonProperty("resource_conf")]
    public Dictionary<string, ResourceConf> ResourceConf { get; set; }

    [JsonProperty("is_part_send")]
    public string IsPartSend { get; set; }
}

[Serializable]
public class ResourceConf
{
    [JsonProperty("dimension_mean")]
    public DimensionMean DimensionMean { get; set; }

    [JsonProperty("limit_conf_value")]
    public LimitConfValue LimitConfValue { get; set; }
}

[Serializable]
public class ModelConfig
{
    [JsonProperty("model_name")]
    public string ModelName { get; set; }

    [JsonProperty("begin_time")]
    public long BeginTime { get; set; }

    [JsonProperty("end_time")]
    public long EndTime { get; set; }

    [JsonProperty("states")]
    public int States { get; set; }

    [JsonProperty("create_user")]
    public string CreateUser { get; set; }

    [JsonProperty("modify_user")]
    public string ModifyUser { get; set; }

    [JsonProperty("create_time")]
    public string CreateTime { get; set; }

    [JsonProperty("modify_time")]
    public string ModifyTime { get; set; }

    [JsonProperty("model_id")]
    public string ModelId { get; set; }
}

[Serializable]
public class LimitRemainDataInfo
{
    [JsonProperty("activity_frequence")]
    public Quota ActivityFrequence { get; set; }

    [JsonProperty("account_frequence")]
    public Quota AccountFrequence { get; set; }

    [JsonProperty("product_quata")]
    public Quota ProductQuata { get; set; }

    [JsonProperty("account_quata")]
    public Quota AccountQuata { get; set; }

    [JsonProperty("resource_id")]
    public string ResourceId { get; set; }
}