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.