Member 12984363 Ответов: 1

Путь возвращения JSON в контроллер MVC


У меня есть хранимая процедура, которая возвращает путь JSON :

GO

alter PROCEDURE [dbo].[usp_getjsondata](


@type  INT

)
AS
BEGIN

SELECT
          [Time] as 'Time',
          cast([Value] as varchar(10)) as 'Value'
      FROM [dbo].[tbl_data] where type = @type
      for JSON PATH

END




В контроллере я написал следующий код:

var json = entities.Database.SqlQuery("exec usp_getjsondata  @type",
               new SqlParameter("@type", type)
        ).ToList();


JSON-данные не хранятся в переменной в JSON. Я что-то упустил?

Что я уже пробовал:

Я попытался сохранить данные в строках или списках, но это не сработало

1 Ответов

Рейтинг:
0

Richard Deeming

FOR JSON вернет одну запись с одной nvarchar(max) поле, содержащее результаты запроса в формате JSON.

string json = string.Concat(entities.Database.SqlQuery("exec usp_getjsondata  @type",
    new SqlParameter("@type", type)
));

Если вы хотите преобразовать это обратно в список объектов, то вам нужно будет разобрать JSON:
var results = JsonConvert.DeserializeObject<IList<YourClass>>(json);

Однако, если вы делаете это, то было бы лучше удалить FOR JSON из запроса и загрузить результаты непосредственно в список:
var results = entities.Database.SqlQuery<YourClass>("exec usp_getdata @type",
    new SqlParameter("@type", type)
).ToList();

Использование для вывода JSON в SQL Server и в клиентских приложениях (SQL Server) | Майкрософт Документы[^]