繁体   English   中英

c#将Json加载到继承类中

[英]c# load Json into inherited class

我有一个C#类,我需要解析它的JSON。

该类具有来自另一个类的List<>

类结构是这样的。

public class OrderFund {
  public int OrderID { get; set; }
  public int BrokerID { get; set; }
  public string SettlementMethod { get; set; }
  public List<SettlementSap> SettlementsSap { get; set; }
}

public class SettlementSap {
  public string SapMonetaryAccountNo { get; set; }
  public string SapMonetaryAccountType { get; set; }
  public string SapMonetaryAccountOffice { get; set; }
}

我的JSON是这样的。

{
  "settlementMethod": "SAP",
  "BrokerID": 1,
  "OrderID": 1,
  "Settlements": [
    {
      "SapMonetaryAccountNo": "400245892464",
      "SapMonetaryAccountType": "CA",
      "SapMonetaryAccountOffice": "AR"
    }
  ]
}

我像这样加载我的JSON文件......

static OrderFund LoadJson(string file) {
  string dire = Directory.GetCurrentDirectory();
  using (StreamReader r = new StreamReader(dire + "\\" + file)) {
    string json = r.ReadToEnd();
    OrderFund items = JsonConvert.DeserializeObject<OrderFund>(json);
    return items;
  }
}

数据加载到OrderFun类中,但OrderFund.SettlementsSap为空。 我怎样才能加载SettlementsSettlementsSap

那是因为您已将字段命名为SettlementsSap,但您的Json字段称为Settlements ...

您可以重命名班级中的字段;

 public class OrderFund 
    {
        public int OrderID { get; set; }
        public int BrokerID { get; set; }
        public string SettlementMethod { get; set; }
        public List<SettlementSap> Settlements { get; set; }
    }

或者像这样在字段中添加[JsonProperty(“Settlements”)]属性;

public class OrderFund 
{
    public int OrderID { get; set; }
    public int BrokerID { get; set; }
    public string SettlementMethod { get; set; }
    [JsonProperty("Settlements")] 
    public List<SettlementSap> SettlementsSap { get; set; }
}

您只需使用Visual Studio函数将您的json转换为模型类

转到: 编辑 - >粘贴特殊 - >粘贴JSON作为类

此功能创建的模型类将解决您的问题

所以,visiblely,必须重命名SettlementsSap通过Settlements

        public class OrderFund
        {
            public string settlementMethod { get; set; }
            public int BrokerID { get; set; }
            public int OrderID { get; set; }
            public Settlement[] Settlements { get; set; }
        }

        public class Settlement
        {
            public string SapMonetaryAccountNo { get; set; }
            public string SapMonetaryAccountType { get; set; }
            public string SapMonetaryAccountOffice { get; set; }
        }

问题在于命名。 在JSON中,名称是Settlements 但在OrderFund的类定义中,它被命名为SettlementsSap

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM