Znění hlášky v jednotlivých prostředích
JSON povoluje jen \", \\, \/, \b,
\f, \n, \r, \t a \uXXXX
se čtyřmi šestnáctkovými číslicemi (RFC 8259, oddíl 7). Zápisy \x41,
\d nebo \' z jiných jazyků nejsou platné.
Příčiny a opravy
Cesta ve Windows s jedním zpětným lomítkem
{"cesta":"C:\\data"} \d není escape sekvence. Samotné zpětné lomítko se v JSON zapisuje jako
\\. Ve Windows lze často použít i obyčejné lomítko (C:/data),
pokud ho cílový program přijímá.
Neúplný zápis \uXXXX
{"znak":"\u0012"} \u musí následovat přesně čtyři šestnáctkové číslice. Znak mimo základní
rovinu (třeba emoji) se zapisuje dvojicí \uD83D\uDE00. Podrobnosti jsou
v řetězcích v JSON.
Jak chybu opravit
Rozlišuj JSON text a řetězec zdrojového jazyka. V JavaScript literálu může být nutná další
vrstva escapování. Nech ji vytvořit JSON.stringify nebo obdobný serializátor.
Co zkontrolovat po opravě
Po načtení opraveného JSON má hodnota obsahovat cestu C:\data s jedním zpětným lomítkem. Dvě lomítka jsou způsob zápisu v JSON textu, nikoli dva znaky výsledné cesty. Platné sekvence mohou být také nechtěné: například zpětné lomítko následované t vytvoří tabulátor. Parser tedy může přijmout text, který představuje jinou cestu, než jsi zamýšlel.
Po kontrole syntaxe proto porovnej i načtenou hodnotu. Pokud JSON vzniká v programu, vytvoř jej z původního řetězce pomocí knihovny. Zvláštní znaky a jednotlivé vrstvy zápisu vysvětluje kapitola Řetězce v JSON, přehled sekvencí je v referenci escape sekvencí.