Предположим, у меня есть enum
public enum Countries {
France, GreatBritain, Japan, CostaRica, ...
}
И, предположим, у меня есть следующее действие в WebApi Controller
[HttpGet]
public ActionResult<Dictionary<Countries, int> Get() {
return new Dictionary<Countries, int> {
[Countries.France] = 10,
[Countries.CostaRica] = 50
...
}
}
JSON, которое отправляется клиенту: "France": 10, "CostaRica": 50
, et c.
Я бы очень предпочел вместо этого 0: 10, 4: 50
. Клиент не знает значений перечисления; только целочисленный индекс и описание (например, «Франция» или «Коста-Рика»). Я заполняю базу данных, используя тот же enum - поэтому я уверен, что идентификаторы совпадают.
Я пробовал разные варианты JsonConverter
, но все они, кажется, принимают скалярное значение.
Примечание: это упрощенный пример; Реальное бизнес-приложение намного сложнее. Очевидно, что использование enum на сервере имеет большое преимущество без создания Dictionary<int, int>
и приведения всех ключей перед возвратом к клиенту. Я почти уверен, что Json. NET может конвертировать его - я просто могу понять, как помочь.
Мое приложение. NET Core 2.2 ; так же и этот пример. Я знаю, что 3.0 обрабатывает Json. Net немного по-другому; но я не думаю, что эта проблема преобразования зависит от версии