2010-11-11 12 views

risposta

55

Sì, gli spazi all'esterno di una stringa letterale con doppi apici vengono ignorati nella sintassi. Specificamente, la produzione ws nella grammatica JSON in RFC 4627 spettacoli:

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 
     ) 
+0

Grazie. Avevo letto la RFC ma non ero sicuro di quale tipo di linguaggio di denotazione della grammatica fosse - in particolare, cosa significava *. – nomen

+1

* = zero o più (dalla notazione di espressioni regolari) – kevinarpe

+0

E riguardo gli spazi incorporati nei valori numerici: è {"a": 12} equivalente a {"a": 1 2} Interpreto la definizione "Gli spazi vuoti insignificanti sono consentiti prima o dopo uno qualsiasi dei sei caratteri strutturali "per indicare che gli spazi bianchi NON sono consentiti all'interno di un valore numerico o di data – aeropapa17

3

Nella versione standard JSON, spazi di fuori di stringhe viene ignorato, come è stato detto.

Tuttavia, poiché la tua domanda è codificata in C#, dovrei notare che c'è almeno un altro caso in C# /. NET dove gli spazi in JSON sono importanti.

Il DataContractJsonSerializer utilizza una speciale proprietà __type per supportare la deserializzazione nella sottoclasse corretta. Questa proprietà è necessaria per essere la prima proprietà di un oggetto e per non avere spazi bianchi tra il nome della proprietà e la precendente {. Vedi questo thread precedente: DataContractJsonSerializer doesn't work with formatted JSON?

Almeno, ho verificato che il requisito di spazi vuoti è vero a partire da .NET 4. Forse questo verrà modificato in una versione futura per renderlo più in linea con lo standard JSON ?

+0

Pericolo, Will Robinson! – wprl

Problemi correlati