【发布时间】:2020-10-27 14:47:17
【问题描述】:
我有这样的 JSON:
{
"success": 1,
"method": "getTrades",
"5183": {
"buy_amount": "0.00455636",
"buy_currency": "BTC"
},
"6962": {
"buy_amount": "52.44700000",
"buy_currency": "IOT"
},
"6963": {
"buy_amount": "383.54300000",
"buy_currency": "TNT"
},
"6964": {
"buy_amount": "3412.50000000",
"buy_currency": "FUN"
},
"6965": {
"buy_amount": "539.45000000",
"buy_currency": "XLM"
}
}
我需要将此 JSON 转换为域模型。
public class Root {
[JsonProperty("success")]
public long Success { get; set; }
[JsonProperty("method")]
public string Method { get; set; }
public Dictionary<long, Transaction> Transactions { get; set; }
public class Transaction{
[JsonProperty("buy_amount")]
public decimal? BuyAmount { get; set; }
[JsonProperty("buy_currency")]
public string BuyCurrency { get; set; }
var model = JsonConvert.DeserializeObject<Root>(response);
我创建了这两个模型,但是当我尝试反序列化事务时,它们为空。我得到了成功和方法的数据
【问题讨论】:
-
这是因为所有这些 JSON 属性都与您的
success属性处于同一级别,而不是在Transactions属性中。 -
我应该改变什么?我不想为所有事务创建类。
-
一种方法是将
Transactions属性重写为:[JsonExtensionData] public Dictionary<string, JToken> Transactions { get; } = new Dictionary<string, JToken>();,但之后您必须转换每个这样的对。我不知道有什么更好的方法。
标签: c# json deserialization