JSON.parse 예기치 않은 문자 오류


112

이 오류가 발생합니다.

JSON.parse : 예기치 않은 문자

방화범에서이 문을 실행할 때 :

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

왜 그래야만하지? JSON 문자열이 나에게 맞는 것 같고 JSHint를 사용하여 테스트했습니다. 위의 경우 전달 된 개체는 콘텐츠 유형이 다음으로 설정된 서버 응답입니다.application/json

답변:


224

문자열을 파싱하지 않고 이미 파싱 된 객체를 파싱합니다. :)

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.

첫 번째 문장에 대해 찬성 투표하고 싶지만 왜 재분석을 하시겠습니까?
Mathletics

1
@MarcelKorpel, Mathletics : 맞습니다. 업데이트되었습니다.
kennytm

@Mathletics 모든 계정에서 JSON.parse는 보안 검사를 수행합니다. NT
BF

5
재밌 네요. 그것을 사랑하십시오. <3
Darth Egregious

1
data.results에서 정의되지 않습니다 (데이터는 JSON 개체 임). 스택은 data = JSON.parse (data)로 js 객체로 만들라고 말합니다. 하지만 JSON.parse 예기치 않은 문자 오류가 발생합니다.
KasparTr

35

단순히를 사용하여 구문 분석 함수에 전달하기 전에 해당 객체가 문자열 화되었는지 확인할 수 있습니다 JSON.stringify().

아래 줄을 업데이트했습니다.

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

또는 JSON이 일부 변수에 저장된 경우 :

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

3
JSON.stringify는 보스입니다.
Kenmeister

-1

OP에는 해당되지 않지만 문자열에 큰 따옴표 ( ') 대신 작은 따옴표 ( )를 사용하면이 오류가 발생할 수 있습니다 ".

JSON 스펙은 문자열을 큰 따옴표가 필요합니다.

예 :

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

오류를 제공하는 반면

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

하지 않습니다. 주위의 따옴표에 유의하십시오 myString.

관련 : https://stackoverflow.com/a/14355724/1461850

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.