【发布时间】:2021-11-17 15:22:09
【问题描述】:
我正在尝试从公共 APE 获取一些 JSON 数据并将记录插入到我的 SQL Azure 数据库中。 API 请求正在工作,JSON 节点中的转换为对象也是如此,但我无法缝合以获取 OPENJSON() 函数来正确解析 json 数据对象。我收到此错误:
RequestError:JSON 文本格式不正确。在位置 1 发现了意外的字符“o”。
从api获取的json数据为:
{
"data":[{
"from": "2021-09-22T23:00Z",
"to": "2021-09-22T23:30Z",
"intensity": {
"forecast": 105,
"actual": 91,
"index": "low"
}
},
{
"from": "2021-09-22T23:30Z",
"to": "2021-09-23T00:00Z",
"intensity": {
"forecast": 92,
"actual": 80,
"index": "low"
}
},
{
"from": "2021-09-23T22:00Z",
"to": "2021-09-23T22:30Z",
"intensity": {
"forecast": 153,
"actual": null,
"index": "low"
}
},
{
"from": "2021-09-23T22:30Z",
"to": "2021-09-23T23:00Z",
"intensity": {
"forecast": 150,
"actual": null,
"index": "low"
}
}]
}
SQL Azure 节点代码如下:
DECLARE @data NVARCHAR(MAX) = N'{{{payload}}}';
INSERT INTO TCarbonIntensity ([from], [to], [forecast], [actual], [index])
SELECT [from], [to], [forecast], [actual], [index]
FROM OPENJSON(@data)
WITH (
[from] datetime '$.from',
[to] datetime '$.to',
[forecast] int '$.intensity.forecast',
[actual] int '$.intensity.actual',
[index] nvarchar(5) '$.intensity.index'
);
【问题讨论】:
-
你能提供一个minimal reproducible example吗?您的问题中的 JSON is 有效(尽管查询不返回任何结果,这是该 JSON 所期望的):db<>fiddle
-
对于给定的 JSON,您可能需要
FROM OPENJSON(@data, '$.data'),但您将遇到的下一个问题是from和to属性的无效日期格式。 -
感谢@AlwaysLearning 的建议,这是我已经尝试过的选项之一。感谢您的意见。
标签: json sql-server node-red