Отключить 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
?
Ответы
Ответ 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.