TSQL JSon Parse

时间:2012-02-26 20:39:37

标签: json tsql

我有一个像下面的Json字符串我试图将其作为行值插入数据库。 例如,这里将有两行插入数据库中,包含4列 列为status,filename,mainpic,fullurl 我理解我想要做的基本想法,但我需要知道如何解析它 顺便说一句,我的JSON将始终以这种方式格式化,因此无需担心它的格式化

{"status":"success",
 "filename":"c3336eab-133d-4e78-ba9a-135152e0cddf.jpg",
 "mainpic":"true","fullurl":"../userimages/c3336eab-133d-4e78-ba9a-135152e0cddf.jpg"},
{"status":"success",
 "filename":"6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg",
 "mainpic":"true","fullurl":"../userimages/6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg"}

2 个答案:

答案 0 :(得分:0)

作为一个起点,您可以看一下这个全面的T-SQL JSON解析函数......

http://www.simple-talk.com/sql/t-sql-programming/consuming-json-strings-in-sql-server/

但是,由于您的JSON非常简单,因此可能需要根据您的需要制作缩减版本。

答案 1 :(得分:0)

使用SQLCLR实现是一种选择。

http://jqsql.com/来源https://github.com/ercananlama/JQSQL

稍微修改输入并将其声明为json数组,将空字符串作为第二个参数传递以选择root。

EXEC jqsql.totable '[
{"status":"success",
 "filename":"c3336eab-133d-4e78-ba9a-135152e0cddf.jpg",
 "mainpic":"true",
 "fullurl":"../userimages/c3336eab-133d-4e78-ba9a-135152e0cddf.jpg"},
{"status":"success",
 "filename":"6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg",
 "mainpic":"true",
 "fullurl":"../userimages/6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg"}
 ]', ''

返回像这样的结果集

status  filename                                 mainpic fullurl
------- ---------------------------------------- ------- ------------------------------------------------------
success c3336eab-133d-4e78-ba9a-135152e0cddf.jpg 1       ../userimages/c3336eab-133d-4e78-ba9a-135152e0cddf.jpg
success 6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg 1       ../userimages/6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg