这是一个非常糟糕的问题......
SQL-Server 不是从 Web 服务读取 JSON 的工具。这应该由您的应用程序完成。您可以在应用程序中解析 JSON 并传递解析的数据,也可以按原样传递 JSON 并使用 SQL-Server 的功能。
请注意,原生 JSON 支持在 v2008 R2 中不可用。 This was introduced with SQL Server 2016.
请发布您的 JSON 的简化(!)示例以及您希望如何插入它的表结构。最好的是 DDL 和一些代码来展示您自己的尝试并重现您的问题。 SO 上的人讨厌链接...
并且:SO 不是 do-my-work 平台...
只是一些提示如何继续(这对任何应用程序的代码都有效):
DECLARE @json NVARCHAR(MAX)=
N'PlaceTheJsonHere';
SELECT *
FROM OPENJSON(@json)
如果我从您的链接中得到两行,则返回两行,一行带有“成功”和一个数组,第二行带有“结果”和一个空数组。
所以我尝试进入数组
SELECT *
FROM OPENJSON(@json) A
OUTER APPLY OPENJSON(A.value)
现在我得到 402 行“成功”。该值是 - 再次 - 一个数组:
一个示例值如下所示
["049644010478","049644010478","049644010478","049644010478","\u06a9\u0646\u062a\u0648\u0631\u0647\u0627\u06cc \u0645\u0648\u0644\u062f \u0628\u0631\u0642 \u0634\u0645\u0627\u0644 \u063a\u0631\u0628","600\/5","1\/1","\u0633\u0627\u0632\u0645\u0627\u0646 \u0635\u0646\u0627\u064a\u0639 \u062f\u0641\u0627\u0639","\u062f\u0627\u0646\u0634\u06af\u0627\u0647-\u0645\u0648\u0644\u062f\u0628\u0631\u0642","\u0633\u0627\u0632\u0645\u0627\u0646 \u0635\u0646\u0627\u064a\u0639 \u062f\u0641\u0627\u0639",null,null,"13961210","0","12","10","1396","\u067e\u0646\u062c \u0634\u0646\u0628\u0647","1210","1210.0",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"OFFLINE"]
愚蠢的 \u0633 值是 unicode 代码点。
再深一层:
SELECT *
FROM OPENJSON(@json) A
OUTER APPLY OPENJSON(A.value) B
OUTER APPLY OPENJSON(B.value) C
现在我发现,第一行提供 56 个列名,而其他行提供内容。这似乎是一张桌子。下面显示了最后一列名称和第一个值的摘录(现在总共有超过 22500 行:
52 POWER_FACTOR_PHASE_A
53 POWER_FACTOR_PHASE_B
54 POWER_FACTOR_PHASE_C
55 READ_FLAG
0 049644009814
1 049644009814
2 049644009814
3 049644009814
4 کنتورهای مولد برق شمال غرب
5 1000/5
6 1/1
7 آفتاب 22(شرق بزگراه آزادگان-بين اتوبان کرج و حکيم(خرگوش دره) پ)
太棒了! JSON 引擎将 unicode 代码点隐式显示为可读字母!
我们现在知道什么?此 json 提供“成功”和“结果”部分。 "success 部分包含一个数组数组,其中第一个索引是列名数组,其余的是表格数据。
剩下的由你决定:-D