Изменение формата API - PullRequest
       2

Изменение формата API

0 голосов
/ 21 февраля 2019

Я создаю API, который возвращает ключ и значение из базы данных.Я хочу вернуть данные по RowId.Я использую хранимую процедуру и лямбда-выражение в C #.Я просто использую .ToList () после получения возвращаемого значения хранимой процедуры.

Вот мой пример кода:

SELECT 
     Id
    ,RowId 
    ,Key
    ,Value 
FROM
    TableOne
WHERE 
    UserId = @userId AND RankType = @rankType

Вот пример данных:

Id  RowId   Key             Value
1   2       Name            John Doe
2   2       Age             30
3   2       Position        Developer

На данный момент я получаю ответ API:

{
    "Key": Name, 
    "Value": John Doe
},
{
    "Key": Age, 
    "Value": 30
},
{
    "Key": Position, 
    "Value": Developer  
}

Это ответ API, который я хочу получить.Как я могу отформатировать мой ответ API в этот формат?

{ 
  "Key": Name, "Value": John Doe,
  "Key": Age, "Value": 30,
  "Key": Position, "Value": Developer
},

1 Ответ

0 голосов
/ 21 февраля 2019

Подход 1:

Вы можете написать свой запрос следующим образом.

select [Name], Age, Position
FROM
(
  select [Value], [Key]
  from TableOne
) d
pivot
(
  max([Value])
  for [Key] in ([Name], Age, Position)
) piv

Вы получите вывод, подобный следующему.

+----------+-----+-----------+
| Name     | Age | Position  |
+----------+-----+-----------+
| John Doe | 30  | Developer |
+----------+-----+-----------+

Онлайн-демонстрация

Теперь сопоставьте этот вывод с эквивалентной моделью в вашей среде интерфейса, и вы получите желаемый JSON, как показано ниже.

{"Name":"John Doe","Age":"30","Position":"Developer"}

Подход 2 (вернуть JSON из БД непосредственно в виде строки)

Для этого вы можете написать свой запрос следующим образом.

select [Name], Age, Position
FROM
(
  select [Value], [Key]
  from TableOne
) d
pivot
(
  max([Value])
  for [Key] in ([Name], Age, Position)
) piv
for json auto

Подход 3:

Обычно считывает данные из DB и преобразует их в соответствующую модель с 3 свойствами, используя LINQ или простой оператор if.

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