Являются ли пробельные символы незначительными в JSON? - PullRequest
52 голосов
/ 11 ноября 2010

В строках json игнорируются пустые символы, такие как пробелы, табуляции и возврат каретки?

Например, {"a":"b"} равно {"a" : "b"}?

Ответы [ 2 ]

62 голосов
/ 11 ноября 2010

Да, пробелы вне строкового литерала в двойных кавычках игнорируются в синтаксисе. В частности, производство ws в грамматике JSON в RFC 4627 показывает:

Insignificant whitespace is allowed before or after any of the six
structural characters.

   ws = *(
             %x20 /              ; Space
             %x09 /              ; Horizontal tab
             %x0A /              ; Line feed or New line
             %x0D                ; Carriage return
         )
5 голосов
/ 19 мая 2013

В стандартном JSON пропуски за пределами строковых литералов игнорируются, как уже было сказано.

Однако, поскольку ваш вопрос помечен как C #, я должен отметить, что в C # /. NET есть хотя бы еще один случай.где пробельные символы в JSON имеют значение.

DataContractJsonSerializer использует специальное свойство __type для поддержки десериализации в правильный подкласс.Это свойство должно быть первым свойством объекта и не иметь пробелов между именем свойства и предшествующим {.См. Этот предыдущий поток: DataContractJsonSerializer не работает с отформатированным JSON?

По крайней мере, я проверил, что требование без пробелов верно для .NET 4. Возможно, это будетизменилось в будущей версии, чтобы привести его в соответствие со стандартом JSON?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...