在控制器返回JSON路径MVC
问题描述:
我有一个存储过程返回一个JSON路径:在控制器返回JSON路径MVC
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中。 我在这里错过了什么吗?
答
张贴我的人回答停留在此,
FOR JSON会返回一个纪录,包含JSON格式的结果为nvarchar(最大)字段。
string json = string.Concat(entities.Database.SqlQuery("exec usp_getjsondata @type",
new SqlParameter("@type", type)
));
可以转换回对象的列表,那么你就需要解析JSON:
var results = JsonConvert.DeserializeObject<IList<Class>>(json);
然而,如果要做到这一点,那么这将是较好的去除存储过程中的FOR JSON,并将结果直接加载到列表中:
var results = entities.Database.SqlQuery<Class>("exec usp_getdata @type",
new SqlParameter("@type", type)
).ToList();
向我们展示存储过程的完整定义,特别是如何定义其参数。 – Amy
@Amy我已更新我的问题 – TheChosenOne94
尝试从您的代码中删除单词“exec”。只是猜测,但这可能是问题。 – Amy