Enum Value в возвращенном JSON из списка - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в этом.В моем классе моделей у меня есть

public class Status
{
   public Codes CodeStatus { get; set; }
   public enum Codes
   {
      Unknown = 0,
      Green=1,
      Yellow=2,
      Red =3
   }
}

Теперь, когда я использую это в моем контроллере, как это

int dbStatus = 3;
Status oStatus = new Status();
oStatus.CodeStatus = (Status.Codes)dbStatus ;
List<Status> ListStatus = new List<Status>();
ListStatus.Add(oStatus);
return ListStatus.ToList();

Когда я отлаживаю значение oStatus.CodeStatus при быстром просмотре, он показывает «Красныйmsgstr "но когда рендеринг JSON выполняется в почтальоне, значение появляется в виде целого числа, а не" красного ".Как Json может отобразить его в красном, зеленом или желтом значениях в списке.

JSON выглядит так

"FD": [
         {
            "Id": 416308,
            "Name": "Head Office ",       
            "CodeStatus": 3,

         }
      ]

1 Ответ

0 голосов
/ 01 марта 2019

Под капотом enum - это просто набор именованных констант, базовый тип которых является целым числом .Десериализатор json знает, как преобразовать его целочисленное значение в значение enum.

Когда вы спрашиваете:

Как Json может отобразить его в виде красных, зеленых или желтых значений в списке.

Я предполагаю, что вы хотитеВаш массив "FD" содержит массив объектов, каждый из которых имеет ключ CodeStatus со значением string вместо значения int?Например, вы хотели бы видеть это:

"FD": [
         {
            "Id": 416308,
            "Name": "Head Office ",       
            "CodeStatus": "Red",
         }
      ]

Правильно?

Если это так, вы можете добавить к этому классу второе свойство, которое является string версией CodeStatus перечисление.И поскольку это «производное» свойство, вы можете использовать либо « Expression Bodied Function » (она же жирная стрелка), либо свойство только для чтения (оно же свойство только с get тер).Итак, что-то вроде:

public class Status
{
   public string CodeStatus => CodeStatusEnum.ToString();
   //Optionally add 
   //[JsonIgnore] // to exclude it from Json Serialization
   public Codes CodeStatusEnum { get; set; }
   //Could also be
   //public string CodeStatus { get { return CodeStatusEnum.ToString(); } }
   public enum Codes
   {
      Unknown = 0,
      Green=1,
      Yellow=2,
      Red =3
   }
}

Наконец, если вы не хотите, чтобы не-строковое свойство вообще отображалось в сериализованном JSON, вы можете добавить атрибут [JsonIgnore] к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...