TSQL JSon解析
我有一个Json字符串,如下所示,我试图将其作为行值插入数据库。 因此,这里的示例将有两行插入到数据库中,共有4列 列包括状态、文件名、mainpic和fullurl 我理解我想要做的事情的基本想法,但我需要知道如何解析它 顺便说一下,我的JSON总是以这种方式格式化的,所以不必担心它是如何格式化的TSQL JSon解析,json,tsql,Json,Tsql,我有一个Json字符串,如下所示,我试图将其作为行值插入数据库。 因此,这里的示例将有两行插入到数据库中,共有4列 列包括状态、文件名、mainpic和fullurl 我理解我想要做的事情的基本想法,但我需要知道如何解析它 顺便说一下,我的JSON总是以这种方式格式化的,所以不必担心它是如何格式化的 {"status":"success", "filename":"c3336eab-133d-4e78-ba9a-135152e0cddf.jpg", "mainpic":"true","ful
{"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字符串进行所需的更改,然后用新字符串更新数据库实际上这是我找到的第一件事,你说得对,这是一个对我所需要的有点过分。另外,它没有将名称-值对作为列名和列值。就像我在这个案子里需要的一样