Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL JSon解析_Json_Tsql - Fatal编程技术网

TSQL JSon解析

TSQL JSon解析,json,tsql,Json,Tsql,我有一个Json字符串,如下所示,我试图将其作为行值插入数据库。 因此,这里的示例将有两行插入到数据库中,共有4列 列包括状态、文件名、mainpic和fullurl 我理解我想要做的事情的基本想法,但我需要知道如何解析它 顺便说一下,我的JSON总是以这种方式格式化的,所以不必担心它是如何格式化的 {"status":"success", "filename":"c3336eab-133d-4e78-ba9a-135152e0cddf.jpg", "mainpic":"true","ful

我有一个Json字符串,如下所示,我试图将其作为行值插入数据库。 因此,这里的示例将有两行插入到数据库中,共有4列 列包括状态、文件名、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"}

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


但是由于您的JSON非常简单,因此可能值得为您的需要制作一个精简版本。

使用SQLCLR实现是一种选择

可用来源

稍微修改输入并将其声明为json数组,将空字符串作为第二个参数传递给select 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"} ]', '' EXEC jqsql.totable'[ {“状态”:“成功”, “文件名”:“c3336eab-133d-4e78-ba9a-135152e0cddf.jpg”, “mainpic”:“true”, “完整URL”:“./userimages/c3336eab-133d-4e78-ba9a-135152e0cddf.jpg”}, {“状态”:“成功”, “文件名”:“6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg”, “mainpic”:“true”, “完整URL”:“./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 状态文件名mainpic fullurl ------- ---------------------------------------- ------- ------------------------------------------------------ 成功c3336eab-133d-4e78-ba9a-135152e0cddf.jpg 1../userimages/c3336eab-133d-4e78-ba9a-135152e0cddf.jpg 成功6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg 1../userimages/6dffc7f0-17e2-40c5-ab6d-c380697ae4d8.jpg
TSQL可能不是适合这项工作的工具。您的开发框架是什么?你会希望在代码中这样做。问题是,如果我在代码(C#)中这样做,可能会导致多个插入,而不是一个。我决定将整个JSon对象作为字符串存储在数据库中的字段中,然后在任何时候我需要进行更改时,我都会提取整个JSon字符串进行所需的更改,然后用新字符串更新数据库实际上这是我找到的第一件事,你说得对,这是一个对我所需要的有点过分。另外,它没有将名称-值对作为列名和列值。就像我在这个案子里需要的一样