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. 【日常学习】【并查集+map】codevs2639 约会计划题解

    然而我居然让诸城一中悲剧机房的C++可以编译了··· 直接上题目 题目描写叙述 Description cc是个超级帅哥,口才又好.rp极高(这句话似乎降rp),又非常的幽默,所以非常多mm都跟他关系 ...

  2. 命令行运行java

    运行TestLinuxCommand.java     代码 import java.io.BufferedReader; import java.io.BufferedWriter; import ...

  3. SpringBoot学习之常用注解

    @SpringBootAppliaction:通常注解写在SpringBoot启动类中,主要包括三个作用: 1.@Configuration表示将该类作用springboot配置文件类. 2.@Ena ...

  4. robotframe使用之滚动条

    方法一:Excute JavaScript window.scrollTo(0,document.body.scrollHeight); 方法二:Execute javascript document ...

  5. python 和 mysql连接

    python 和 mysql连接 虫师教程:http://www.cnblogs.com/fnng/p/3565912.html 其他教程pymysql:http://www.cnblogs.com/ ...

  6. IOS研究之网络编程(二)-Cocoa Streams使用具体解释

     本文以及相关的系列文章是我总结的iOS网络开发方面的知识点,本文是第二篇,主要分析了Cocoa Streams中的几个重要类 Cocoa Streams实际上是Objective-C对CFNet ...

  7. [概念理解] MVC模式和C++的实现

    [转]学习可以是一件很快乐的事,特别是当你发现以前所学的点点滴滴慢慢地能够串起来或者变成了一个环,这种感觉真好.这篇文章就这么来的. 从MVC架构开始说起吧.这两天系统了解了一下MVC架构的内容,主要 ...

  8. CPI

    CPI (Consumer Price Index 物价指数) 是政府用来衡量通货膨胀的其中一个数据.通俗的讲,CPI就是市场上的货物价格增长百分比.一般市场经济国家认为CPI在2-3%属于可接受范围 ...

  9. 导出到Excel中NPOI

    源地址:http://www.cnblogs.com/dreamof/archive/2010/06/02/1750151.html\ 1.NPOI官方网站:http://npoi.codeplex. ...

  10. ASP.NET动态网站制作(6)-- JS(1)

    前言:JS的第一节课,在Visual Studio 2013中编写及运行.新建项目->Web->ASP.NET Web应用程序->Empty,打开后在项目下添加新建css文件夹和js ...