JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
SQL与Json
SQLServer对从2016开始添加了对Json数据的支持,我们可以很轻松的将查询的数据通过SQL语句直接转成Json格式,这对我们存储和交互数据提供了一个很好的途径。
今天我们就说说在SQLServer中如何将查询结果生成Json文本。
测试数据准备
为了测试效果,我们先准备测试数据,这里做一个简单的销售表:
演示数据
神奇的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添加了根节点“业务信息”。
希望对您有所帮助!
首先先说下表单提交吧,要提交表单那么就得先收集表单数据(至于验证这个我就不...
自 2020 年 1 月发布 5.5 内核之后,到现在已经有近 87,000 个补丁,来自于近 46...
每一名计算机的学子都有一个大厂梦 看见工作室的学长拿到字节offer的时候心里是...
在.NET Core的项目中,如果我们要在项目中引用其它DLL文件,不建议直接在项目引...
大部分论坛、网站等,为了方便管理,都进行了关于敏感词的设定。 在多数网站,敏...
前言 后台开发,netstat命令总是绕不过,不仅工作中经常用过,面试也是考的多。n...
一、实现效果 主要是IO和Sharedpreferences的数据持久化对于后者xml更为方便易实...
本文实例讲述了PHP设计模式:组合模式Composite。分享给大家供大家参考,具体如...
前言:恰逢准备找新工作,整理个人学习以及在大厂面试中汇总的基础要点难点,覆...
★文章内容学习来源拉勾教育大前端就业集训营 多媒体标签 多媒体标签包含两个具...