Десериализация JSON возвращает {null, null} для KeyValuePair - PullRequest
0 голосов
/ 04 октября 2018

Я объявил приведенную ниже пару ключ: значение в JSON:

"saleParameters": [
        {"saleName":"FlashSale2018"},
  ]

Я сопоставляю вышеперечисленное, используя свойство ниже в моем классе контракта:

    [JsonProperty("saleParameters")]
    public IEnumerable<KeyValuePair<string,string>> SaleParameters { get; set; }

Нопо какой-то причине я всегда получаю нулевые значения в SaleParameters после десериализации.Я использую NewtonSoft.JSON для сериализации / десериализации JSON, код работает на ядре .net.

Есть идеи о том, почему это происходит и как это решить?

1 Ответ

0 голосов
/ 04 октября 2018

Проблема в том, что ваш текущий код ожидает JSON, подобный этому :

"saleParameters": [
    {"Key": "saleName", "Value": "FlashSale2018"}]
]

Вместо этого следует использовать словарь:

public IEnumerable<IDictionary<string,string>> SaleParameters { get; set; }

Это будет десериализовать "saleName »как ключ и« FlashSale2018 »как значение.И, если вам действительно нужно IEnumerable<KeyValuePair<string, string>>, вы можете позвонить SaleParameters.SelectMany(p => p). ToEnumerable().

...