Простые символы, такие как пробелы, табуляции и возврат каретки, игнорируются в json-строках?Являются ли пробельные символы несущественными в JSON?
Например, is {"a":"b"}
{"a" : "b"}
?
Простые символы, такие как пробелы, табуляции и возврат каретки, игнорируются в json-строках?Являются ли пробельные символы несущественными в JSON?
Например, is {"a":"b"}
{"a" : "b"}
?
Да, пробелы вне строкового литерала с двойными кавычками игнорируются в синтаксисе. В частности, производство 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 )
Спасибо. Я читал RFC, но не знал, что это за язык грамматики, а именно, что означал *. – nomen
* = ноль или более (из регулярных выражений) – kevinarpe
Что касается пробелов, встроенных в числовые значения: {"a": 12} эквивалентно {"a": 1 2} Я интерпретирую определение "Незначительные пробелы разрешены до или после любого из шести структурных символов ", чтобы подразумевать, что пробел НЕ допускается внутри числового значения или даты – aeropapa17
В стандартном формате JSON, пробелы вне строковых литералов игнорируется, как уже было сказано.
Однако, поскольку ваш вопрос отмечен C#, я должен отметить, что есть хотя бы один другой случай в C# /. NET, где пробел в JSON имеет значение.
DataContractJsonSerializer
использует специальное свойство __type
для поддержки десериализации для соответствующего подкласса. Это свойство должно быть первым свойством в объекте и не иметь пробелов между именем свойства и предшествующим {
. См. Эту предыдущую тему: DataContractJsonSerializer doesn't work with formatted JSON?
По крайней мере, я протестировал, что требование без пробелов истинно с .NET 4. Возможно, это будет изменено в будущей версии, чтобы привести ее в соответствие со стандартом JSON ?
Опасность, будет Робинсон! – wprl
пробелы не являются технически пустыми символами – Falmarri
технически ваш мозг должен был разобрать «пустым» как «пробел» – mk12