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