gpt4 book ai didi

json - 执行 SQL Server 代理作业时出错 : JSON text is not properly formatted, 意外字符 '"'

转载 作者:行者123 更新时间:2023-12-05 02:16:31 24 4
gpt4 key购买 nike

使用 Microsoft SQL Server 2016 (RTM) 标准版,我尝试使用 SQL Server 代理作业将 JSON 加载到 SQL Server 表中,并收到以下错误:

JSON text is not properly formatted. Unexpected character '"' is found at position 508. [SQLSTATE 42000] (Error 13609).

但是当我将它作为 T-SQL 运行时,它会插入数据而不会出现错误。

DECLARE @return_value int,
@responseText nvarchar(MAX),
@json nvarchar(MAX)

EXEC @return_value = [dbo].[HTTPRequest]
@URI = N'http://flexapi.foresightgps.com/ForesightFlexAPI.ashx',
@methodName = N'post',
@requestBody = N'{"method":"GetTagTempHistory","conncode":"PROVIDER","code":"USERNAME","wsuserid":"USERID" }',
@SoapAction = 'MSXML2.ServerXMLHTTP',
@UserName = N'USERNAME',
@Password = N'PASSWORD',
@responseText = @responseText OUTPUT
--SELECT @responseText as '@responseText';
SELECT @json= VALUE FROM OPENJSON(@responseText) WHERE [key]='ForesightFlexAPI';
INSERT INTO Localizado([TransactionID],[TrueTime],[Temp],[Name],[yLat],[xLong],[Speed],[Ignition],[Location])
SELECT [TransactionID],[TrueTime],[Temp],[Name],[yLat],[xLong],[Speed],[Ignition],[Location]
FROM OPENJSON(@json,'lax $.DATA')
WITH( TransactionID nvarchar(20) '$.TransactionID',
TrueTime NVARCHAR(50) '$.TrueTime',
Temp decimal(9,4) '$.Temp',
Name nvarchar(50) '$.Name',
yLat nvarchar(50) '$.yLat',
xLong nvarchar(50) '$.xLong',
Speed nvarchar(20) '$.Speed',
Ignition nvarchar(20) '$.Ignition',
Location nvarchar(500) 'lax $.Location'
)

最佳答案

问题是从 API 返回的 JSON 字符串在从 SQL Server 代理作业而不是从 SSMS 执行时被截断。 So the unexpected character will always be something near 512.

同样,它会抛出一个 XML parsing error如果作业返回 XML 而不是 JSON 字符串。

解决方案是SET TEXTSIZE -1 ,在您的 SQL Server 代理作业中,在执行您的存储过程之前。您的 SQL Server 代理作业的命令应该是这样的:

SET TEXTSIZE -1
EXECUTE [your stored procedure]

如果您对差异感到好奇,您可以将您的 @responseText 插入临时表,您肯定会看到一个没有 SET TEXTSIZE -1 的截断 JSON 字符串如果 @responseText 超过 512 个字符。

关于json - 执行 SQL Server 代理作业时出错 : JSON text is not properly formatted, 意外字符 '"',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49758868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com