/ / Десеріалізувати JSON у словник за допомогою DataContractJsonSerializer [дублікат] - c #, .net, json, серіалізація, .net-4.5

Deserialize JSON до словника з DataContractJsonSerializer [дублікат] - c #, .net, json, serialization, .net-4.5

У відповіді я отримую такий результат JSON:

{"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?

Відповіді:

0 для відповіді № 1

Ваш рядок JSON являє собою об'єкт з aвластивість Результат, який сам по собі є об'єктом з 4 властивостями: "", ABC, XYZ та Test. Щоб результат був списком KeyValuePairs, JSON виглядатиме так:

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

Зауважте, що якщо ви використовуєте асоціативний масиву коді Javascript, що він буде серіалізуватися як об'єкт із парами властивостей, а не як масив об'єктів. Якщо це джерело рядка JSON, можливо, вам доведеться перейти на використання звичайного індексованого масиву у своєму JS, щоб отримати належний JSON.