Strings are the most opinionated part of the spec
JSON strings are always wrapped in double quotes. Single quotes are not allowed — the spec is unambiguous. This trips up everyone coming from JavaScript or Python where both work for native string literals.
The escape sequences
\"— literal double quote\\— literal backslash\/— forward slash (optional escape, sometimes useful for embedded HTML)\b \f \n \r \t— control characters\uXXXX— Unicode code point in hex (4 digits, BMP only; surrogate pairs for non-BMP)
What you cannot put in a JSON string raw
Control characters U+0000 through U+001F must be escaped (use \u0007 for bell, etc.). A literal newline inside a string is a syntax error. Tabs are too — use \t. The error message is usually 'unexpected token' on the line after, not the line you actually broke.
Principle: JSON strings are encoded, not quoted. Quoting hides characters; encoding reveals them.
\n in JSON source is two characters; the parsed value is one (newline). Always think 'what does the parser see?' before writing tricky string content.