Представляет ли {"some": "thing \ n"} - объект json в кодировке Unicode, который считается допустимым json? - PullRequest
0 голосов
/ 04 мая 2018

Согласно 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" - он может быть проанализирован без каких-либо ошибок. Кто-нибудь знает причину этого?

...