将数据库SQL查询结果直接转为JSON

发布时间:2025-05-23 12:16:07 作者:益华网络 来源:undefined 浏览量(1) 点赞(1)
摘要:JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 SQL与Json SQLServer对从2016开始添加了对Jso

JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 

 

SQL与Json

SQLServer对从2016开始添加了对Json数据的支持,我们可以很轻松的将查询的数据通过SQL语句直接转成Json格式,这对我们存储和交互数据提供了一个很好的途径。

今天我们就说说在SQLServer中如何将查询结果生成Json文本。

测试数据准备

为了测试效果,我们先准备测试数据,这里做一个简单的销售表: 

declare @sale table(   FName nvarchar(50),   FDistrict nvarchar(50),   FAmount decimal(28,10)  ); insert into @sale  values  (张三,北京,20000),  (张三,上海,50000),  (张三,深圳,40000),  (张三,广州,30000),  (李四,北京,30000),  (李四,上海,50000),  (李四,深圳,40000),  (李四,广州,10000); 

演示数据

神奇的for json auto子句

在查询的from子句中加上 for json auto,查询结果就会自动转成json文本,这是最简单的一种转换方式。

select *from @sale for json auto 

查询的结果就是json文本了。 

 

查询结果自动转成Json

把Json抓取出来,效果如下: 

 

自动导出的Json文本

是否感觉很神奇,如果您觉得SQLServer对导出Json的支持仅仅如此,那您就太小看微软了,下面我们再说说更强大的导出功能。

神奇的for json path子句

见识了神奇的for json auto子句,我们在看看另一个神奇的for json path子句,该子句使用列别名或列名来确定 JSON 输出中的键名称。

比如我们把“姓名”作为一个顶层节点,把区域和销售额设置一个上级节点“销售情况”: 

select FName as 姓名,   FDistrict as 销售情况.区域,   FAmount as 销售情况.金额  from @sale   for json path

查询的结果也是Json文本:

 

查询结果自动转成Json

把Json抓取出来,效果如下: 

 

自动导出的Json文本

有没有发现什么不同?“销售情况.区域”、“销售情况.金额”中的点号,自动将“销售情况”作为了上级节点,“区域”和“金额”作为了子节点。

神奇的ROOT选项

对Json比较熟悉的朋友会发现,for json auto和for json path导出的Json直接是数组,每条记录就是一个数组元素,缺少了根节点,如果我们想要给Json加一个根节点要怎么做呢?

SQLServer提供了Root选项来完成根节点的添加工作: 

select FName as 姓名,   FDistrict as 销售情况.区域,   FAmount as 销售情况.金额  from @sale   for json path, root(业务信息); 

查询的结果仍然是Json文本: 

 

查询结果自动转成Json

把Json抓取出来,效果如下: 

 

自动导出的Json文本

可以看到Json添加了根节点“业务信息”。

希望对您有所帮助! 

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!