在T-SQL OPENJSON查询中转义字符

Joh*_*ohn 5 sql t-sql json escaping sql-server-2016

我有以下JSON数据

DECLARE @jsonData NVARCHAR(MAX)
SET @jsonData =
'{  
   "insertions":[  
      {  
         "id":"58735A79-DEA8-462B-B3EB-C2797CA9D44E",
         "last-modified":"2017-08-08 13:07:32",
         "label":"HelloWorld1"
      },
      {  
         "id":"00565BCD-4240-46CF-A48F-849CB5A8114F",
         "last-modified":"2017-08-08 13:11:38",
         "label":"HelloWorld12"
      }
   ]
}'
Run Code Online (Sandbox Code Playgroud)

并尝试从中执行选择:

SELECT
    *
FROM
    OPENJSON(JSON_QUERY(@jsonData,'$.insertions'))
WITH
    (uuid UNIQUEIDENTIFIER '$.id',
    modified DATETIME '$.last-modified',
    Label NVARCHAR(128) '$.label'
    )
Run Code Online (Sandbox Code Playgroud)

它不喜欢最后修改字段中的破折号.

消息13607,级别16,状态4,行18
JSON路径格式不正确.在位置6处找到意外的字符" - ".

有没有办法逃避查询中的破折号?如果没有破折号,一切正常.

根据需要支持JSON,我使用兼容级别= 130的SQL Server 2016

Joh*_*ohn 10

在字段名称周围添加双引号似乎有效

SELECT
    *
FROM
    OPENJSON(JSON_QUERY(@jsonData,'$.insertions'))
WITH
    (uuid UNIQUEIDENTIFIER '$.id',
    modified DATETIME '$."last-modified"',
    Label NVARCHAR(128) '$.label'
    )
Run Code Online (Sandbox Code Playgroud)