2013-12-14 2 views
0

У меня проблемы с десериализацией этой структуры данных JSON, поступающей из API. У нас нет возможности изменить данные JSON, поэтому мне нужно сериализовать его как есть.Deserializing 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 и т. Д.)?

ответ

1

Вы должны добавить DataContractJsonSerializerSettings так:

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

И это будет работать. Удачи!

+0

Отлично! Это работает, много спасибо :) – Martin

Смежные вопросы