JSON.parse beklenmeyen karakter hatası


112

Bu hatayı alıyorum:

JSON.parse: beklenmeyen karakter

Bu ifadeyi firebug'da çalıştırdığımda:

JSON.parse({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false});

Neden böyle? JSON dizesi bana doğru görünüyor ve ben de JSHint kullanarak test ettim. Yukarıdaki durumda aktarılan nesne, içerik türü şu şekilde ayarlanmış bir sunucu yanıttır:application/json

Yanıtlar:


224

Bir dizeyi çözümlemiyorsunuz, önceden ayrıştırılmış bir nesneyi ayrıştırıyorsunuz :)

var obj1 = JSON.parse('{"creditBalance":0,...,"starStatus":false}');
//                    ^                                          ^
//                    if you want to parse, the input should be a string 

var obj2 = {"creditBalance":0,...,"starStatus":false};
// or just use it directly.

İlk cümle için oy vermek istiyorum ama neden yeniden ayrıştırıyorsun?
Mathletics

1
@MarcelKorpel, Matematik: Doğru. Güncellenmiş.
kennytm

@Mathletics Tüm hesaplarda JSON.parse bazı güvenlik kontrolleri yapar. NT
BF

5
Bu çok komik. Sevdim. <3
Darth Egregious

1
Data.results üzerinde tanımsız hale geliyorum (veri bir JSON nesnesidir). Stack bana data = JSON.parse (data) ile onu bir js nesnesi yapmamı söylüyor. Ama JSON.parse beklenmedik karakter hatası alıyorum.
KasparTr

35

Basitçe kullanarak, söz konusu nesneyi ayrıştırma işlevine geçirmeden önce dizgilendirildiğinden emin olabilirsiniz JSON.stringify().

Aşağıdaki satırınızı güncelledik,

JSON.parse(JSON.stringify({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false}));

veya bazı değişkenlerde depolanan JSON'unuz varsa:

JSON.parse(JSON.stringify(yourJSONobject));

3
JSON.stringify patrondur.
Kenmeister

-1

OP için doğru değildir, ancak bu hata, dizeler için 'double ( ") yerine tek tırnak işaretlerinin ( ) kullanılmasından kaynaklanabilir .

JSON Spec dizeleri için çift tırnak işareti gerektirir.

Örneğin:

JSON.parse(`{"myparam": 'myString'}`)

hata verirken

JSON.parse(`{"myparam": "myString"}`)

değil. Tırnak işaretlerine dikkat edin myString.

İlgili: https://stackoverflow.com/a/14355724/1461850

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.