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

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.

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));

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.