Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

c# load Json into inherited class

I have a C# classes and I need to parse JSON into it.

The class has a List<> from another class.

The class structure is like this.

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

My JSON is like this.

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

I load my JSON file like this...

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

The data load fine into OrderFun Class but OrderFund.SettlementsSap is null. How can I load Settlements into SettlementsSap?

like image 256
Diego Avatar asked Nov 23 '25 05:11

Diego


1 Answers

That's because you have named the field SettlementsSap but your Json field is called Settlements...

You could rename the field in your class;

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

or add a [JsonProperty("Settlements")] attribute to the field like so;

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; }
}
like image 137
Milney Avatar answered Nov 25 '25 20:11

Milney



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!