create PROCEDURE [dbo].[usp_SerializeJSON]
@ParameterSQL as varchar(max)
AS
BEGIN
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)) declare @JSON varchar(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 > 0
begin
set @RowStart = @RowStart + len(@StartRoot)
set @RowEnd = charindex(@EndRoot, @XMLString, @RowStart)
set @Row = substring(@XMLString, @RowStart,@RowEnd - @RowStart)
set @JSON = @JSON + '{' -- for each row
set @FieldStart = charindex(@StartField, @Row, 0)
while @FieldStart > 0
begin
-- parse node key
set @FieldStart = @FieldStart + len(@StartField)
set @FieldEnd = charindex(@EndField, @Row, @FieldStart)
set @KEY = substring(@Row, @FieldStart,@FieldEnd - @FieldStart)
set @JSON = @JSON + '"' + @KEY + '":'
-- parse node value
set @FieldStart = @FieldEnd + 1
set @FieldEnd = charindex('</', @Row, @FieldStart)
set @Value = substring(@Row, @FieldStart,@FieldEnd - @FieldStart)
set @JSON = @JSON + '"' + @Value + '",' set @FieldStart = @FieldStart + len(@StartField)
set @FieldEnd = charindex(@EndField, @Row, @FieldStart)
set @FieldStart = charindex(@StartField, @Row,@FieldEnd)
end
if len(@JSON) > 0 set @JSON = substring(@JSON, 0, len(@JSON))
set @JSON = @JSON + '},'
--/ for each row set @RowStart = charindex(@StartRoot, @XMLString, @RowEnd)
end
if len(@JSON) > 0 set @JSON = substring(@JSON, 0, len(@JSON))
set @JSON = '[' + @JSON + ']'
select @JSON
END

数据库,序列化数据为json字符串的更多相关文章

  1. 基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串、list集合(MVC5)<二>

    上篇博客给大家介绍了基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串.list集合(MVC5)<一>, 其中的两种方式都显得有些冗余.接着上篇博客继续 ...

  2. c# .net 读取json 字符串 与序列化和反序列化json字符串

    命名空间 using Newtonsoft.Json.Linq; JObject obj = JObject.Parse("json字符串");用 obj["" ...

  3. 使用python将mysql数据库的数据转换为json数据

    由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...

  4. javascript对象序列化(对象与JSON字符串的互换)

    前一段时间用到h5的本地存储---需要把某个js对象存储在浏览器的本地存储中,用到了javascript对象的序列化与反序列化 所谓的序列化就是将对象的状态信息转换为可以存储或传输的形式的过程,基本上 ...

  5. 获取表格数据转换为JSON字符串

    核心代码JavaScript代码: 方法一 function sc () { var myTable=document.getElementById("myTable"); //获 ...

  6. PHP的serialize序列化数据与JSON格式化数据

    serialize序列化 我们在一些老的WEB系统中可能会看到在数据库或在文本文件中存储着一大串貌似有着特殊含义的字符串文本内容.我们仔细看会发现它具有数据类型和结构等信息,但是它并不容易人工阅读,它 ...

  7. Mybatis的分页插件PageHelp:Page对象中的pageSize等属性无法序列化,无法转换为json字符串

    Page<User> page = new Page<>();        User user = new User();        user.setAge(20);   ...

  8. C#按需序列化对象为Json字符串

    只贴代码,不解释了.新的代理类型确实很给力! public static class JsonHelper { public static string ToJsonString<T>(I ...

  9. 用Gson解析没有数据头的纯数组json字符串

    无数据头Json字符串 Json字符串只有数组,而次数组没有名字,如下 [ { "name": "zhangsan", "age": &qu ...

随机推荐

  1. 2016.6.20 eclipse中maven的配置

    前期准备: 安装maven,配置maven的环境变量,并且通过mvn -v验证安装成功.   网上的教程说,需要在线或者离线安装maven integration for eclipse插件. 但是我 ...

  2. Solidworks如何改变零件颜色

    如图所示装配体有三个零件,现在我想把移动件的颜色变成红色   鼠标左键单击要改变颜色的零件(这里点击"移动件"),然后在弹出的菜单中选择颜色,最后点击"编辑颜色" ...

  3. shell脚本学习笔记 (正則表達式)

    正則表達式一般有三个部分组成,他们各自是:字符类,数量限定符,位置限定符. 规定一些特殊语法表示字符类.数 量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正則表達式(Regu ...

  4. 网络电台(WIZ550io)

    网络电台是用WIZ550io(内嵌MAC地址)和ATMEGA1284(Flash 128K,EEPROM4K)制作的.用户可注冊多达80个无线电广播. 无线电广播的注冊可在内嵌网页中进行. 网络电台的 ...

  5. RelativeLayout布局(仅在RelativeLayout中有效)

    在父亲布局的相对位置 android:layout_alignParentLeft="true"     //在布局左边 android:layout_alignParentRig ...

  6. Pentaho Work with Big Data(五)—— 格式化原始web日志

    本演示样例说明怎样使用Pentaho MapReduce把原始web日志解析成格式化的记录. 一.向HDFS导入演示样例数据文件 将weblogs_rebuild.txt文件放到HDFS的/user/ ...

  7. 最短路 uva12661 Funny Car Racing

    传送门:点击打开链接 题意:给你有向图,每条边呈周期性开放,即开放a时间,再关闭b时间.再开放a时间以此类推 假设时间不足以穿过这条路则不能走.你能够在节点等待时间,问从s走到t所须要的最小时间 细致 ...

  8. Chrome自带恐龙小游戏的源码研究(三)

    在上一篇<Chrome自带恐龙小游戏的源码研究(二)>中实现了云朵的绘制和移动,这一篇主要研究如何让游戏实现昼夜交替. 昼夜交替的效果主要是通过样式来完成,但改变样式的时机则由脚本控制. ...

  9. android studio 更新Gradle版本号方法

    在导入其它项目时,常常因为gradle版本号不一致而导致不能编译 解决方法: 第一步: 按提示点击让它下载.事实上目的并非要它下载.因为这样速度会非常慢.这样做仅仅是为了让它在本地创建相应的文件夹结构 ...

  10. OpenCV2马拉松第15圈——边缘检測(Laplace算子,LOG算子)

    收入囊中 拉普拉斯算子 LOG算子(高斯拉普拉斯算子) OpenCV Laplacian函数 构建自己的拉普拉斯算子 利用拉普拉斯算子进行图像的锐化 葵花宝典 在OpenCV2马拉松第14圈--边缘检 ...