1

根据 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
        )

所以我可以将 '{' 和 '}' 表示为 unicode 字符?如果我将 JSON 对象 - {"some":"thing\n"} 转换为 unicode,它表示为:\u007B\u0022\u0073\u006F\u006D\u0065\u0022\u003A\u0022\u0074\u0068\u0069 \u006E\u0067\u006E\u0022\u007D 为什么 YAJL 解析器会给出错误呢?如果我将输入修改为“\u0022\u0073\u006F\u006D\u0065\u0022\u003A\u0022\u0074\u0068\u0069\u006E\u0067\u006E\u0022” - 它可以解析它而不会出现任何错误。有谁知道这背后的原因?

4

0 回答 0