Подтвердить что ты не робот

Являются ли пробельные символы несущественными в JSON?

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

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

4b9b3361

Ответ 1

Да, пробелы вне строкового литерала с двойными кавычками игнорируются в синтаксисе. В частности, создание 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
         )

Ответ 2

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

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

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

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