将JSON类型作为参数传递给使用ASP.Net中的ADO.Net的SQL Server 2016存储过程核心项目
有人可以举例说明如何将JSON类型作为参数传递给使用ADO.Net在SQL Server 2016存储过程中的C#ASP.Net核心Web Api项目? 我想看看SQL Server 2016存储过程的例子,并在C#ASP.Net Core Web Api中传递JSON类型。将JSON类型作为参数传递给使用ASP.Net中的ADO.Net的SQL Server 2016存储过程核心项目
在sql服务器中没有json data type
您可以简单地将您的json
作为varchar
发送到存储过程。
如果您想将您的json映射到表格,您可以使用使用OPENJSON
将数据转换为rows
和columns
。
CREATE PROCEDURE SaveJSON
@pID int,
@pJson nvarchar(max)
AS
BEGIN
INSERT INTO [YourTable]
([ID]
,[JSONData])
VALUES
(@pID
,@pJson)
END
如果要映射与表JSON对象,你可以做到这一点
//json would be something like this
[
{ "id" : 2,"name": "John"},
{ "id" : 5,"name": "John"}
]
INSERT INTO YourTable (id,Name)
SELECT id, name
FROM OPENJSON(@pJson)
WITH (id int,
name nvarchar(max))
Here是一个很好的和详细的文章,这将给你详细的想法来处理json data
SQL Server 2016有本地JSON支持 - 一个新的JSON数据类型(它基于nvarchar
),以及一个FOR JSON命令将查询输出转换为JSON格式
微软没有包括单独的JSON数据类型 - 相反,有许多的JSON功能,这对类型的列进行操作NVARCHAR(n)
如果(到打包数据库行到JSON,或JSON解析成关系数据)你有JSON文本,你可以从JSON中提取数据,或者使用内置函数JSON_VALUE
,JSON_QUERY
和ISJSON
验证JSON格式是否正确。对于更高级的查询和分析,OPENJSON
函数可以将JSON对象数组转换为一组行。任何SQL查询都可以在返回的结果集上执行。最后,有FOR JSON
子句可让您将查询结果格式化为JSON文本。
因此,我建议您使用NVARCHAR(MAX)
作为存储过程参数。
非常好的问题。我也想 –
AFIAK,Sql server 2016没有JSON数据类型,所以你只需将你的json作为varchar传递给存储过程即可。在存储过程中,您可以使用知道如何处理JSON数据的[内置函数](https://msdn.microsoft.com/en-us/library/dn921897.aspx)。您可以在[本文]中看到代码示例。(https://blogs.msdn.microsoft.com/sqlserverstorageengine/2015/09/08/passing-arrays-to-t-sql-procedures-as-json/) –
在你的问题中有两个句子,他们都说*完全相同。然后你的问题的标题又说*完全一样* *。请清理你的问题。 – Tomalak