Согласно JSON RFC:
Текст JSON - это последовательность токенов. Набор жетонов включает в себя шесть
структурные символы, строки, числа и три буквенных имени.
Текст JSON представляет собой сериализованный объект или массив.
JSON-text = object / array
Это шесть структурных символов:
begin-array = ws %x5B ws ; [ left square bracket
begin-object = ws %x7B ws ; { left curly bracket
end-array = ws %x5D ws ; ] right square bracket
end-object = ws %x7D ws ; } right curly bracket
name-separator = ws %x3A ws ; : colon
value-separator = ws %x2C ws ; , comma
Незначительные пробелы разрешены до или после любого из шести
структурные символы.
ws = *(
%x20 / ; Space
%x09 / ; Horizontal tab
%x0A / ; Line feed or New line
%x0D ; Carriage return
)
То есть я могу представить '{' и '}' как символы Юникода?
Если я преобразую объект JSON - {"some": "thing \ n"} в Unicode, он будет представлен как:
\ U007B \ u0022 \ U0073 \ u006F \ u006D \ u0065 \ u0022 \ u003A \ u0022 \ u0074 \ u0068 \ u0069 \ u006E \ u0067 \ u006E \ u0022 \ u007D
Почему тогда YAJL-парсер выдает ошибку?
Если я изменю входные данные как «\ u0073 \ u006D \ u006D \ u0022A \ u0022 \ u0068E \ u0069E \ u006E \ u006E \ u0022E" - он может быть проанализирован без каких-либо ошибок.
Кто-нибудь знает причину этого?