2017-08-25 2 views
2

Ich habe folgende JSON DatenEscaping von Zeichen in T-SQL OPENJSON fragt

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" 
     } 
    ] 
}' 

Und versuchen, ein wählen Sie aus, es auszuführen:

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

Es mag nicht den Strich in der letzten modifiziertes Feld

Msg 13607, Ebene 16, Status 4, Zeile 18
JSON Pfad nicht richtig formatiert ist. Unerwartetes Zeichen '-' wird an Position 6 gefunden.

Gibt es eine Möglichkeit, den Bindestrich in der Abfrage zu umgehen? Alles funktioniert gut, wenn es keinen Strich gibt.

Als JSON zur Unterstützung erforderlich ist, ich bin mit SQL Server 2016 mit Kompatibilitätsgrad = 130

Antwort

3

doppelte Anführungszeichen um die Feldnamen scheint

SELECT 
    * 
FROM 
    OPENJSON(JSON_QUERY(@jsonData,'$.insertions')) 
WITH 
    (uuid UNIQUEIDENTIFIER '$.id', 
    modified DATETIME '$."last-modified"', 
    Label NVARCHAR(128) '$.label' 
    ) 
zu arbeiten Hinzufügen