Подтвердить что ты не робот

Отключить JSON в словарь с помощью DataContractJsonSerializer

Получаю следующий результат JSON int response:

{"result": { "":-41.41, "ABC":0.07, "XYZ":0.00, "Test":0.00 }}

Я подготовил следующий класс для десериализации:

[DataContract]
public sealed class RpcResponse
{
    [DataMember(Name = "result")]
    public List<KeyValuePair<string, decimal>> Result { get; set; }
}

Однако, когда я пытаюсь десериализовать его с помощью DataContractJsonSerializer, свойство Result заканчивается тем, что имеет нулевые записи. (Также не работает при объявлении Result как Dictionary<string, decimal>)

Есть ли способ выполнить это с помощью DataContractJsonSerializer?

4b9b3361

Ответ 1

Ваша строка JSON представляет объект с свойством Result, которое само является объектом с 4 свойствами: "", ABC, XYZ и Test. Чтобы получить список KeyValuePairs, JSON будет выглядеть так:

{"result": [{ "":-41.41}, {"ABC":0.07}, {"XYZ":0.00}, {"Test":0.00 }] }

Обратите внимание, что если вы используете ассоциативный массив в Javascript-коде, он будет сериализован как объект с парами свойств-значений, а не как массив объектов. Если это источник строки JSON, вам может потребоваться переключиться на обычный индексированный массив в вашем JS, чтобы получить правильный JSON.