그래서 내가 가지고있는 문제는이 문자열에서 JSON.parse ()를 호출하려고 할 때 예기치 않은 토큰이 계속 발생한다는 것입니다. 메이커에서 계속 탈출하는 것 같고 []을 (를) 이해하지 못합니까? 누구 든지이 문제에 대해 밝힐 수 있다면 대단히 감사하겠습니다.
var x = '[{
"db":"COLLECTIONS"
,"sisn":"1093041"
,"accession":"2011.285.01"
,"bowner":"Osgoode Township Historical Society and Museum"
,"title":"Wooden pattern for foundry"
,"titlelink":"http://felix.minisisinc.com/ottawa/scripts/mwimain.dll/475/2/1/109 3041?RECORD&UNION=Y"
,"maker":[]
,"image":"[M3IMAGE]201128501.jpg"
,"bookmarked":0
,"refd":0
}]';
var result = JSON.parse(x);
제공된 데이터는 잘 구문 분석됩니다.
var x = '[{' +
'"db":"COLLECTIONS"' +
',"sisn":"1093041"' +
',"accession":"2011.285.01"' +
',"bowner":"Osgoode Township Historical Society and Museum"' +
',"title":"Wooden pattern for foundry"' +
',"titlelink":"http://felix.minisisinc.com/ottawa/scripts/mwimain.dll/475/2/1/109 3041?RECORD&UNION=Y"' +
',"maker":[]' +
',"image":"[M3IMAGE]201128501.jpg"' +
',"bookmarked":0' +
',"refd":0' +
'}]';
console.log(JSON.parse(x));
따라서 문제는 (적어도 귀하의 예에서는) 여러 줄 문자열을 할당하려고 할 때 구문 오류가 발생한다는 것입니다. 여러 줄 문자열은 이러한 방식으로 할당 할 수 없습니다. 다음은 몇 가지 대안입니다.
// concatenate each line
var x = '[{' +
'"db":"COLLECTIONS",' +
'"sisn":"1093041"' +
'}]';
console.log(JSON.parse(x));
// escape each line
var x = '[{ \
"db":"COLLECTIONS", \
"sisn":"1093041" \
}]';
console.log(JSON.parse(x));
// template literal it (this snippet will not run in some browsers!)
var x = `[{
"db":"COLLECTIONS",
"sisn":"1093041"
}]`;
console.log(JSON.parse(x));
"연결"기술을 사용하는 경우 문자열 (예 :)에있을 수있는 작은 따옴표를 이스케이프해야합니다 this is Marcelino\'s answer
.
"이스케이프"기술을 사용하는 경우 이스케이프 된 백 슬래시는에 의해 제대로 처리되지 않으므로 문자열에 백 슬래시를 포함 할 수 없습니다 JSON.parse
(적어도 내가 아는 한, 누구든지 이것을 명확히 할 수 있다면 좋을 것입니다).
"템플릿 리터럴"기술을 사용하는 경우 지원 하려는 브라우저 (또는 js 환경)에서 사용할 수 있는지 확인 하거나 트랜스 파일러 (예 : Babel)를 사용하십시오.
도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다