因此,我正在使用'FOR JSON'从SQL Server 2016生成JSON文件。
我使用JSON_QUERY包装查询,以防止在生成的双引号(")之前出现转义字符。这部分工作得很好,但是格式化日期中的斜杠(/)仍然会显示。
需要注意的一点是,我正在使用以下方法将SQL中的datetime对象转换为CONVERT(VARCHAR,[dateEntity],101)。
以下是一个示例(这是子查询)
JSON_QUERY((
SELECT [LegacyContactID]
,[NameType]
,[LastName]
,[FirstName]
,[Active]
,[Primary]
,CONVERT(VARCHAR,[StartDate],101) AS [StartDate]
,CONVERT(VARCHAR,[EndDate],101) AS [EndDate]
FROM [LTSS].[ConsumerFile_02_ContactName]
WHERE [LegacyContactID] = ContactList.[LegacyContactID]
FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER
)) AS ContactName
结果将会是
"ContactName": {
"LegacyContactID": "123456789",
"NameType": "Name",
"LastName": "Jack",
"FirstName": "Apple",
"Active": true,
"Primary": true,
"StartDate": "04\/01\/2016",
"EndDate": "04\/30\/2016"
}
我将整个查询都包装在JSON_QUERY中以消除转义,但仍然在日期的斜杠上进行了转义。我尝试将日期作为字符串传递而没有进行转换,结果仍然相同。有什么见解吗?
replace(some_json,'\/','/')
中。我已经更新了现在替换文档页面上的评论,因为在他们将事情移动到此处之后,我的旧评论已经消失了:https://learn.microsoft.com/en-us/sql/relational-databases/json/how-for-json-escapes-special-characters-and-control-characters-sql-server - Brian Jorden