Newline ile JSON.parse

Javascript'te \ n karakterli bir json'u neden ayrıştıramıyorsunuz?

JSON.parse ('{"x": "\ n"}')

Ancak, JSON.parse (JSON.stringify ({"x": "\ n"})) yaptığınızda, geçerlidir.

http://www.jslint.com/ says that {"x": "\n"} is a valid JSON. I wonder what does spec says about this?

Update: For those who marked this duplicate, this is not the same question as "How to handle newlines in JSON". This question is more about why can't an unescaped newline character allowed in JSON.

4
Geçerli JSON, kodlanmamış satır sonlarına sahip olamaz. apos açıldıktan sonra, iki satırınız olur ve bunu ayrıştırmaya çalışırsınız. "\\ n" kullanın
katma yazar dandavis, kaynak
Geçerli JSON, kodlanmamış satır sonlarına sahip olamaz. apos açıldıktan sonra, iki satırınız olur ve bunu ayrıştırmaya çalışırsınız. "\\ n" kullanın
katma yazar dandavis, kaynak
js php'den farklıdır, ' ve " aynı şeyi belirtir. Yapmak için JSON.parse ' i alert ile değiştirin sorunun ne olduğu belli.
katma yazar dandavis, kaynak
js php'den farklıdır, ' ve " aynı şeyi belirtir. Yapmak için JSON.parse ' i alert ile değiştirin sorunun ne olduğu belli.
katma yazar dandavis, kaynak
JSLint, bir değerlendirmenin arkasına saklanarak JSON veya yorumlanmamış kodu kontrol etmez.
katma yazar dandavis, kaynak
JSLint, bir değerlendirmenin arkasına saklanarak JSON veya yorumlanmamış kodu kontrol etmez.
katma yazar dandavis, kaynak
@AditMShah, Hey naber? Seninle nerede irtibata geçebilirim?
katma yazar Juzer Ali, kaynak
@AditMShah, Hey naber? Seninle nerede irtibata geçebilirim?
katma yazar Juzer Ali, kaynak
Merhaba Cüzer Ali, hatırladın mı? CouponDunia'dan. =)
katma yazar Aadit M Shah, kaynak
Merhaba Cüzer Ali, hatırladın mı? CouponDunia'dan. =)
katma yazar Aadit M Shah, kaynak

8 cevap

JSON.parse('{"x": "\n"}') fails because '{"x": "\n"}' is not a valid JSON string due to the unescaped slash symbol.

JSON.parse() requires a valid JSON string to work.

'{"x": "\\n"}' is a valid JSON string as the slash is now escaped, so JSON.parse('{"x": "\\n"}') will work.

JSON.parse(JSON.stringify({"x" : "\n"})) works because JSON.stringify internally escapes the slash character.

JSON.stringify ({"x": "\ n"}) sonucu {"x": "\ n"} , ancak bunu ayrıştırmaya çalışırsanız JSON.parse ('{"x": "\ n"})' kullanarak, kaçmadığından YAZILIR. JSON.stringify çıkış karakterini döndürdüğü için JSON.parse (JSON.stringify ()) çalışacaktır.

7
katma

JSON.parse('{"x": "\n"}') fails because '{"x": "\n"}' is not a valid JSON string due to the unescaped slash symbol.

JSON.parse() requires a valid JSON string to work.

'{"x": "\\n"}' is a valid JSON string as the slash is now escaped, so JSON.parse('{"x": "\\n"}') will work.

JSON.parse(JSON.stringify({"x" : "\n"})) works because JSON.stringify internally escapes the slash character.

JSON.stringify ({"x": "\ n"}) sonucu {"x": "\ n"} , ancak bunu ayrıştırmaya çalışırsanız JSON.parse ('{"x": "\ n"})' kullanarak, kaçmadığından YAZILIR. JSON.stringify çıkış karakterini döndürdüğü için JSON.parse (JSON.stringify ()) çalışacaktır.

7
katma

Olması gereken:

JSON.parse('{"x": "\\n"}')

Karakterden kaçmak için \\ kullanmanız gerekir.

Neden geçersiz?

It' from rfc4627 specs

Kaçması gereken karakterler hariç tüm Unicode karakterler tırnak işaretleri içine yerleştirilebilir: tırnak işareti, ters satırlar ve denetim karakterleri (U + 0000 ila U + 001F). "Bir yeni satır kontrol karakteri olduğundan, kaçmak.

1
katma

Olması gereken:

JSON.parse('{"x": "\\n"}')

Karakterden kaçmak için \\ kullanmanız gerekir.

Neden geçersiz?

It' from rfc4627 specs

Kaçması gereken karakterler hariç tüm Unicode karakterler tırnak işaretleri içine yerleştirilebilir: tırnak işareti, ters satırlar ve denetim karakterleri (U + 0000 ila U + 001F). "Bir yeni satır kontrol karakteri olduğundan, kaçmak.

1
katma

JavaScript'te "\ n" , \ n değişmez dizgisi değil. Yeni satır karakteri içeren bir dizedir. Bu JSON'unuzu geçersiz kılar.

Değişmez dizgiyi \ n temsil etmek için, ilk ters eğik çizgi karakterinden başka bir ters eğik çizgi karakterinden kaçmanız gerekir: "\\ n" .

0
katma

JavaScript'te "\ n" , \ n değişmez dizgisi değil. Yeni satır karakteri içeren bir dizedir. Bu JSON'unuzu geçersiz kılar.

Değişmez dizgiyi \ n temsil etmek için, ilk ters eğik çizgi karakterinden başka bir ters eğik çizgi karakterinden kaçmanız gerekir: "\\ n" .

0
katma

Dizenizde " \ " 'den kaçmanız gerekir (bunu bir çift- " \\ " haline getirin), aksi takdirde JSON'da yeni bir satır olur. kaynağı, JSON verileri değil.

Ayrıştırırken \ n karakterini başka karakterlerle değiştirmeyi deneyin ve bu karakterleri bir kontrole atamadan önce bu karakterleri \ n ile değiştirin.

0
katma

Dizenizde " \ " 'den kaçmanız gerekir (bunu bir çift- " \\ " haline getirin), aksi takdirde JSON'da yeni bir satır olur. kaynağı, JSON verileri değil.

Ayrıştırırken \ n karakterini başka karakterlerle değiştirmeyi deneyin ve bu karakterleri bir kontrole atamadan önce bu karakterleri \ n ile değiştirin.

0
katma