G’day,
We observed in a previous installment that JSON uses the backslash character “” as the escape character.
However, what happens if we actually want a backslash in our sting.
Well, We just escape that with another backslash
SELECT STRING_ESCAPE('' , 'json');
Which gives (simply)
\
So when we see a JSON document like this
[ { "Character": "n" }, { "Character": "r" } ]
Then we might wonder
- Has something gone wrong?
- Is this valid JSON?
The answer would be that everything is fine and this is perfectly valid JSON.
Why?
Because r and n are both non-printable characters.
You’ll see this is valid if you use STRING_ESCAPE
SELECT STRING_ESCAPE(CHAR(10) , 'json') AS [Character] UNION SELECT STRING_ESCAPE(CHAR(13) , 'json');
Which gives
Char(10) – ASCII 10 – is the new line character, while CHAT(13) – ASCII 13 – is the carriage return character.
If you’d like to look at other examples of non printable characters then you can play with the STRING_EXCAPE and ASCII T-SQL functions
I hope this has helped on your SQL Server JSON journey. We’ll see more real soon.
Have a great day
Cheers
Marty
Download Files
JSON, SQL Server and Esacpe Characters of the non-printable kind