У меня есть классы 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; }
}
My 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 равна нулю. Как загрузить Settlements в SettlementsSap?
Проблема связана с именованием. В JSON это имя Settlements. Но в определении класса OrderFund он называется SettlementsSap
Вы просто используете функцию Visual Studio, которая преобразует ваш json в класс модели
Перейти: Edit -> Paste special -> Paste JSON as Class
Созданный класс модели по этой функции решит вашу проблему
Итак, видимо, вы должны переименовать 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; }
}