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.