【发布时间】:2016-11-12 05:33:50
【问题描述】:
我有一个非常大的源 JSON 文件,其中包含大量未格式化为集合的实体;每个实体之间没有封装方括号和逗号分隔符。所以想象一下,我有 '{}{}' 而不是 '[{},{}]'。我正在尝试使用 OPENJSON 查询它,但在当前结构中我只得到第一条记录。
这就是我正在做的事情:
DECLARE @json VARCHAR(MAX)
SET @json =
N'
{
"Id":1
}
{
"Id":2
}
'
SELECT * FROM
OPENJSON (@json)
WITH (Id INT)
我得到一个记录 1 的结果。有没有一种方法可以查询结构,还是我非常愿意尝试重新格式化源?
【问题讨论】:
-
问题在于这实际上不是 JSON。它很接近,但并不完全。我建议先对其进行一些重新格式化,例如添加方括号,然后将每个 { 替换为 ,{ (然后使用 STUFF 删除第二个您将使用流氓逗号的字符。
-
顺便说一句,我认为
@json应该是NVARCHAR(MAX);)。
标签: json tsql sql-server-2016