2010-11-11 15 views

cevap

55

Evet, sözdiziminde çift tırnaklı bir dize değişmezinin dışındaki boşluklar yok sayılır. Özellikle, RFC 4627 gösterir JSON dilbilgisi içinde ws üretim: Standart JSON olarak

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

teşekkürler ayrıştırmış olması gerekir. RFC'yi okudum ama ne tür bir dilbilgisi denotation dilinin olduğundan emin değildim - özellikle, ne anlama geliyordu *. – nomen

+1

* = sıfır veya daha fazla (normal ifade gösterimi) – kevinarpe

+0

Sayısal değerlere yerleştirilmiş boşluklar hakkında: {"a": 12} {"a" ile eşdeğerdir: 1 2} Tanımı yorumla "Önemsiz boşluk öncesi veya "6 yapısal karakterden herhangi birinden sonra" bu boşluk, sayısal veya tarih değeri içinde – aeropapa17

3

, dize hazır dışında boşluk söylendiği gibi, göz ardı edilir. Ancak, sorunuz C# olarak etiketlendiğinden, JSON içindeki boşlukların önemli olduğu C#/NET'te en az bir başka durumun olduğunu not etmeliyim. Not: http: //www.microsoft.com/downloads/default.aspx?displaylang=tr

DataContractJsonSerializer, doğru alt sınıfın seri hale getirilmesini desteklemek için özel bir __type özelliği kullanır. Bu özelliğin, bir nesnenin ilk özelliği olması ve özellik adı ile önceki { arasında hiçbir boşluk olmaması gerekir. Bu önceki iplik bakınız: DataContractJsonSerializer doesn't work with formatted JSON?

En azından, ben hiçbir boşluk gereksinimi JSON standardına uyumlu hale daha getirmek için Belki de bu gelecekteki bir sürümde değişecektir .NET 4. itibariyle doğru olduğunu test ettik ?

+0

Tehlike, Will Robinson! – wprl

İlgili konular