Kesalahan karakter JSON.parse yang tidak terduga

112

Saya mendapatkan kesalahan ini:

JSON.parse: karakter yang tidak terduga

ketika saya menjalankan pernyataan ini di firebug:

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

Kenapa gitu? String JSON tampaknya benar bagi saya dan saya juga mengujinya menggunakan JSHint. Objek yang diteruskan dalam kasus di atas adalah respons server dengan tipe konten disetel keapplication/json

krishna
sumber

Jawaban:

224

Anda tidak mengurai string, Anda mengurai objek yang sudah diurai :)

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.
kennytm
sumber
Saya ingin memberi suara positif untuk kalimat pertama, tetapi mengapa Anda harus mengurai ulang?
Mathletics
1
@MarcelKorpel, Mathletics: Benar. Diperbarui.
kennytm
@Mathletics Dengan semua akun JSON.parse melakukan beberapa pemeriksaan keamanan. NT
BF
5
Kocak sekali. Suka. <3
Darth Egregious
1
Saya mendapatkan tidak terdefinisi pada data.results (data adalah objek JSON). Stack memberi tahu saya untuk menjadikannya objek js dengan data = JSON.parse (data). Tapi saya mendapatkan kesalahan karakter JSON.parse yang tidak terduga.
KasparTr
35

Anda dapat memastikan bahwa objek yang dimaksud telah dirangkai sebelum meneruskannya ke fungsi parse hanya dengan menggunakan JSON.stringify().

Memperbarui baris Anda di bawah,

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

atau jika Anda menyimpan JSON di beberapa variabel:

JSON.parse(JSON.stringify(yourJSONobject));
ScrapCode
sumber
3
JSON.stringify adalah bosnya.
Kenmeister
-1

Tidak benar untuk OP, tetapi kesalahan ini dapat disebabkan oleh penggunaan tanda kutip tunggal ( '), bukan double ( ") untuk string.

Spesifikasi JSON membutuhkan tanda kutip ganda untuk string.

Misalnya:

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

memberikan kesalahan, sedangkan

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

tidak. Perhatikan tanda kutip di sekitar myString.

Terkait: https://stackoverflow.com/a/14355724/1461850

atomh33ls
sumber