数据库,序列化数据为json字符串
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字符串的更多相关文章
- 基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串、list集合(MVC5)<二>
上篇博客给大家介绍了基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串.list集合(MVC5)<一>, 其中的两种方式都显得有些冗余.接着上篇博客继续 ...
- c# .net 读取json 字符串 与序列化和反序列化json字符串
命名空间 using Newtonsoft.Json.Linq; JObject obj = JObject.Parse("json字符串");用 obj["" ...
- 使用python将mysql数据库的数据转换为json数据
由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...
- javascript对象序列化(对象与JSON字符串的互换)
前一段时间用到h5的本地存储---需要把某个js对象存储在浏览器的本地存储中,用到了javascript对象的序列化与反序列化 所谓的序列化就是将对象的状态信息转换为可以存储或传输的形式的过程,基本上 ...
- 获取表格数据转换为JSON字符串
核心代码JavaScript代码: 方法一 function sc () { var myTable=document.getElementById("myTable"); //获 ...
- PHP的serialize序列化数据与JSON格式化数据
serialize序列化 我们在一些老的WEB系统中可能会看到在数据库或在文本文件中存储着一大串貌似有着特殊含义的字符串文本内容.我们仔细看会发现它具有数据类型和结构等信息,但是它并不容易人工阅读,它 ...
- Mybatis的分页插件PageHelp:Page对象中的pageSize等属性无法序列化,无法转换为json字符串
Page<User> page = new Page<>(); User user = new User(); user.setAge(20); ...
- C#按需序列化对象为Json字符串
只贴代码,不解释了.新的代理类型确实很给力! public static class JsonHelper { public static string ToJsonString<T>(I ...
- 用Gson解析没有数据头的纯数组json字符串
无数据头Json字符串 Json字符串只有数组,而次数组没有名字,如下 [ { "name": "zhangsan", "age": &qu ...
随机推荐
- 【唯星宠物】——BootStrap/Mysql/PHP/Ajax爬坑之正则验证登录注册子页
前言:唯星宠物产品官网的登录注册,单独一个子页,页面使用BootStrap实现响应式,PHP提供服务端,利用Ajax技术,从Mysql中获取JSON数据,并对表单信息进行正则验证.项目github地址 ...
- 移动端弹窗 layer.js 使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 伪静态对struts action的重写
参见 http://ocaicai.iteye.com/blog/1312189 最重要的而是在web.xml中配置 <filter-mapping> <filter-name> ...
- android位置布局
fill_parent 设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间.这跟Windows控件的dockstyle属性大体一致.设置一个顶部布局或控件为 ...
- ASP.NET MVC 扩展自定义视图引擎支持多模板&动态换肤skins机制
ASP.NET mvc的razor视图引擎是一个非常好的.NET MVC 框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的 ...
- Android MarginLeft与MarginStart的差别
在写layout布局的时候,我们会发现有这样几个比較相似的属性: MarginStart MarginLeft MarginEnd MarginRight 这些属性的差别是什么? 依据ap ...
- CPU核心电压与VID电压
1.CPU核心电压与VID电压的区别 VID是CPU电压识别信号,CPU的工作电压就是由VID来定义的,CPU核心电压是CPU正常工作所需的电压 原理: (1)通常主板上用硬件VID确定BOOT VI ...
- win10多用户远程登录
实现效果:不同的电脑可以同时登录一台windows主机,但是必须使用不同的账号 首先,我们来创建一个新用户 点击设置,搜索用户 点击下一步,一个普通用户就创建完成了. 然后,打开远程设置,右键此电脑, ...
- Spring Resource框架体系介绍
Resource介绍 在使用spring作为容器进行项目开发中会有很多的配置文件,这些配置文件都是通过Spring的Resource接口来实现加载,但是,Resource对于所有低级资源的访问都不够充 ...
- sphinx PDF 中文
使用reST撰写文档时,需要分多个文档时,就必须使用sphinx了,sphinx说起来很简单的,但是默认是不是支持中文的.幸好我出生的晚,sphinx现在已经支持xelatex了^_^ 安装 除了pa ...