分析:
查询结果转换成json需要经过两个步骤,首先将查询结果转成XML数据,然后通过XML数据转成json。代码部分来源于网上。
一、查询结果转为XML

//其中@ParameterSQL为要查询的语句,@XMLXML格式数据,@XMLStringXML转成字符串
DECLARE @ParameterSQL NVARCHAR(MAX)='SELECT * FROM table';
DECLARE @SQL NVARCHAR(MAX)
DECLARE @XMLString VARCHAR(MAX)
DECLARE @XML XML
DECLARE @Paramlist NVARCHAR(1000)
SET @Paramlist = N'@XML XML OUTPUT'
SET @SQL = 'WITH PrepareTable (XMLString)'
SET @SQL = @SQL + 'AS( '
SET @SQL = @SQL + @ParameterSQL+ ' FOR XML RAW,TYPE,ELEMENTS'
SET @SQL = @SQL + ')'
SET @SQL = @SQL + 'SELECT @XML=[XMLString]FROM[PrepareTable]'
EXEC sp_executesql @SQL, @Paramlist, @XML=@XML OUTPUT
SET @XMLString=CAST(@XML AS VARCHAR(MAX))
SELECT @XML;
SELECT @XMLString;

二、XML数据格式转为JSON数据格式

CREATE PROCEDURE [dbo].[SerializeJSON] (@XML  XML,@json_xml  NVARCHAR(MAX) OUTPUT)
AS
BEGINDECLARE @XMLString NVARCHAR(MAX);SET @XMLString = CAST(@XML AS NVARCHAR(MAX));BEGIN TRY--//开始捕捉异常DECLARE @JSON NVARCHAR(MAX);DECLARE @Row VARCHAR(MAX);DECLARE @RowStart INT;DECLARE @RowEnd INT;DECLARE @FieldStart INT;DECLARE @FieldEnd INT;DECLARE @KEY VARCHAR(MAX);DECLARE @Value VARCHAR(MAX);DECLARE @StartRoot VARCHAR(100);SET @StartRoot = '<row>';DECLARE @EndRoot VARCHAR(100);SET @EndRoot = '</row>';DECLARE @StartField VARCHAR(100);SET @StartField = '<';DECLARE @EndField VARCHAR(100);SET @EndField = '>';SET @RowStart = CHARINDEX(@StartRoot, @XMLString, 0);SET @JSON = '';WHILE @RowStart>0BEGINSET @RowStart = @RowStart + LEN(@StartRoot);SET @RowEnd = CHARINDEX(@EndRoot, @XMLString, @RowStart);SET @Row = SUBSTRING(@XMLString, @RowStart, @RowEnd - @RowStart);SET @JSON = @JSON + '{';--//for each rowSET @FieldStart = CHARINDEX(@StartField, @Row, 0);WHILE @FieldStart>0BEGIN--//parse node keySET @FieldStart = @FieldStart + LEN(@StartField);SET @FieldEnd = CHARINDEX(@EndField, @Row, @FieldStart);DECLARE @end INT = CHARINDEX('/>', @Row, @FieldStart);IF @end<1OR @end>@FieldEndBEGINSET @KEY = SUBSTRING(@Row, @FieldStart, @FieldEnd - @FieldStart);SET @JSON = @JSON + '"' + @KEY + '":';--//parse node valueSET @FieldStart = @FieldEnd + 1;SET @FieldEnd = CHARINDEX('</', @Row, @FieldStart);SET @Value = SUBSTRING(@Row, @FieldStart, @FieldEnd - @FieldStart);SET @JSON = @JSON + '"' + @Value + '",';END;SET @FieldStart = @FieldStart + LEN(@StartField);SET @FieldEnd = CHARINDEX(@EndField, @Row, @FieldStart);SET @FieldStart = CHARINDEX(@StartField, @Row, @FieldEnd);END;IF LEN(@JSON)>0SET @JSON = SUBSTRING(@JSON, 0, LEN(@JSON));SET @JSON = @JSON + '},';--// for each rowSET @RowStart = CHARINDEX(@StartRoot, @XMLString, @RowEnd);END;IF LEN(@JSON)>0SET @JSON = SUBSTRING(@JSON, 0, LEN(@JSON));--//SET @JSON = '[' + @JSON + ']';SET @json_xml = @JSON;END TRY--//结束捕捉异常BEGIN CATCH--//有异常被捕获SET @json_xml = @XMLString;END CATCH;--//结束异常处理
END;

sql查询结果转化为JSON数据格式相关推荐

  1. mysql查询转json数据库_数据库大师成长日记:将数据库SQL查询结果直接转为JSON...

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

  2. 查询mysql并转成json_将数据库SQL查询结果直接转为JSON

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

  3. java解析sql查询字段_sql解析json格式字段 如何获取json中某个字段的值?

    java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...

  4. 格式资料python sqlalchemy 查询结果转化为 Json格式

    最近使用开辟的过程中出现了一个小问题,顺便记录一下原因和方法--格式资料 最近,给自己开辟的软件平台开辟第三方调用的API,如果返回结果集是json格式,其他语言开辟就绝对便利一些,网上找了好多资料没 ...

  5. java如何实现把list数据格式转化为json数据格式

    首先在pom.xml文件中加入以下依赖条件: <dependency> <groupId>com.google.code.gson</groupId> <ar ...

  6. 后台多条sql查询,json传前台,前台处理多条sql数据实例

    后台多条sql查询,json传前台,前台处理多条sql数据实例 前台jsp页面: <div class="yppp_2" style="margin-left:10 ...

  7. python 数据库查询序列化_python-将sqlalchemy类序列化为json

    我正在尝试将sqlalchemy查询的结果(列表)序列化为json. 这是课程: class Wikilink(Base): __tablename__='Wikilinks' __table_arg ...

  8. 组合查询--表单对象转化为json数组

    baseAction中: public void write2JsonArray(List<?> list, String[] excludes) throws IOException { ...

  9. php输出json到表格,PHP中把数据库查询结果输出为json格式

    header("Content-type:text/html;charset=utf-8");//字符编码设置 $servername = "localhost" ...

最新文章

  1. 北方大学 ACM 多校训练赛 第十五场 蜘蛛牌A
  2. 将游戏成绩传到排名页面html,用野狗开发实时游戏排行榜
  3. 从最近的AAAI和EMNLP中了解命名实体识别与关系抽取的联合建模
  4. 拓端tecdat|R语言使用Metropolis- Hasting抽样算法进行逻辑回归
  5. Linux I2C总线驱动调试之i2c-tools工具使用
  6. jfinal解决跨域(eova和jfinal)
  7. python dateutil_Python3.x:日期库dateutil简介
  8. python stm32f401_使用Python编程STM32F401 Nucleo开发板快速入门
  9. HDU 1880 魔咒词典
  10. Ant下载安装配置及使用
  11. 人民币对美元汇率中间价报6.7774元 下调109个基点
  12. 【解决方法】ubuntu20 hp1020 打印机不识别无反应
  13. C++描述 LeetCode 112. 路径总和
  14. js阻止事件的默认行为发生的三种方式
  15. Mapgis to shp数据转换
  16. Maven — maven filtering OTS parsing error incorrect file size in WOFF head 产生原因及两种解决方案
  17. java实现编译器_实现一个简单的编译器
  18. TP5 操作excel 导出
  19. 拓嘉辰丰电商:多多国际入驻,需要什么资质条件
  20. Dism++ 一款传说中“老司机”都爱用的系统工具,使用简介

热门文章

  1. vue app.js <!doctype html>报错 Unexpected token ‘<‘ 作者:哇塞大嘴好帅
  2. js关闭一个html页面跳转,js如何关闭当前页面
  3. “C语言的核心是指针,灵魂是算法“那么指针为什么被誉为C语言灵魂呢?
  4. OCZ RevoDrive3x run smartctl ERR: sda: Current [descriptor]: sense key: Recovered Error
  5. 休闲娱乐小游戏,水果机,复制代码就能用
  6. 游戏大师约翰·卡麦克
  7. 树莓派网络监控(官方64位系统+docker+motioneye+内网穿透)
  8. 2D游戏vs3D游戏
  9. Java代理设计模式详解
  10. element table合并单元格