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

发表于:2019-1-15 10:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:网云技术    来源:快资讯

  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添加了根节点“业务信息”。
  希望对您有所帮助!

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号