将带有动态键的JSON反序列化到字典中

本文关键字:反序列化 字典 JSON 动态 | 更新日期: 2024-09-21 09:09:12

我在从API反序列化此JSON数据结构时遇到问题。我们不可能更改JSON数据,所以我需要按原样序列化它

{"success":"1","return":{"balances_available":{"ALF":"0.00000000","AMC":"0.00000000","ADT":"0.00000000","ANC":"0.00000000"}}}

目前我尝试这个

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Response));
balances = serializer.ReadObject(ms) as Response;
[DataContract]
public class Response
{
    [DataMember(Name = "success")]
    public int Status { get; set; }
    [DataMember(Name = "return")]
    public Balance Return { get; set; }
}
[DataContract]
public class Balance
{
    [DataMember(Name = "balances_available")]
    public Dictionary<string, string> BalancesAvailable { get; set; }
}

但是我的字典有0个条目,所以看起来不像是在序列化。除了手动创建一个类来定义所有余额项目(ALF、AMC等)之外,没有其他方法可以解决这个问题吗?

将带有动态键的JSON反序列化到字典中

您必须像这样添加DataContractJsonSerializerSettings

 var settings = new DataContractJsonSerializerSettings
                    {
                        UseSimpleDictionaryFormat = true
                    };
 var serializer = new DataContractJsonSerializer(typeof(Response), settings);

这将是工作。祝你好运