JSON.Parse','Uncatched SyntaxError:예기치 않은 토큰 o
웹 서비스에서 돌아온 JSON에 문제가 있습니다.JSON에 견적이 부족한 것 같습니다만, JSON에 견적을 추가하면 에러가 납니다.다음은 오류 메시지입니다. 'Uncatched SyntaxError:예기치 않은 토큰 o.문자열을 콘솔에 기록할 때: [Object Object], [Object Object]
에러를 시뮬레이트 하는 코드 예를 다음에 나타냅니다.
//Error I am trying to solve
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.Name + '</li>').appendTo($grouplist);
});
});
다음은 문자열 주위에 작은 따옴표로 둘러싸인 동일한 코드입니다.그건 효과가 있다.
//Successful Javascript
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.Name + '</li>').appendTo($grouplist);
});
});
//Successful HTML
<ul id="groups"></ul>
그러나 실제 코드에서 필요한 것처럼 따옴표를 문자열에 추가하려고 하면 실패합니다.
//Does not work when I need to append quotes to the string:
var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
jsonStringQuotes = "'" + jsonStringNoQuotes + "'";
var myData = JSON.parse(jsonStringQuotes);
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.Name + ',' + this.Id + '</li>').appendTo($grouplist);
});
});
다음 오류: 콘솔에 대한 로그 문자열: [개체 개체], [개체 개체] data.js:809 Unaught SyntaxError:예기치 않은 토큰 '
당황스럽네요.아무쪼록 잘 부탁드립니다!감사해요!
작은 따옴표가 없으면 안에 두 개의 개체가 있는 배열을 만듭니다.이것은 JavaScript 고유의 구문입니다.따옴표를 추가하면 해당 개체(array+2 개체)가 문자열이 됩니다.사용할 수 있습니다.JSON.parse
문자열을 JavaScript 개체로 변환합니다.사용할 수 없습니다.JSON.parse
JavaScript 개체를 JavaScript 개체로 변환합니다.
//String - you can use JSON.parse on it
var jsonStringNoQuotes = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
//Already a javascript object - you cannot use JSON.parse on it
var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
게다가 리터럴의 작은 따옴표 문자를 JSON 문자열에 추가하고 있기 때문에, 마지막 예는 실패합니다.이건 불법이에요.JSON 사양에서는 큰따옴표만 사용할 수 있습니다.만약 당신이 한다면console.log
다음...
console.log("'"+[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]+"'");
//Logs:
'[object Object],[object Object]'
배열의 문자열 표현을 반환하는 것을 알 수 있습니다.이 문자열은 쉼표로 구분된 목록으로 변환되며 각 목록 항목은 개체의 문자열이 됩니다.[object Object]
javascript의 연관 배열은 각 키/값 쌍이 속성/값인 단순한 객체입니다.
왜 이런 일이 일어날까요?스트링으로 시작하니까"'"
어레이에 추가하려고 하면 어레이의 문자열 표현이 요구되고 다른 문자열이 추가됩니다."'"
.
JSON과 Javascript는 전혀 다르기 때문에 혼동하지 말아 주세요.JSON은 사람이 읽을 수 있는 데이터 형식이며 javascript 객체를 만들 때 사용하는 구문에 일치하도록 설계되었습니다.JSON은 문자열입니다.Javascript 객체는 그렇지 않으므로 코드로 선언할 때 따옴표로 둘러싸여 있지 않습니다.
http://jsfiddle.net/NrnK5/ 를 참조해 주세요.
var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
json 객체를 만듭니다.해석할 필요가 없습니다.
jsonStringQuotes = "'" + jsonStringNoQuotes + "'";
'[object]'가 반환됩니다.
그래서 에러가 발생하고 있습니다.
var myData = JSON.parse(jsonStringQuotes);
마지막 예는 비활성 JSON입니다.내부 문자열을 제외하고 JSON에서는 작은 따옴표를 사용할 수 없습니다.두 번째 예에서는 단일 따옴표는 문자열에 포함되지 않고 시작과 끝을 나타내는 역할을 합니다.
자세한 것은, http://www.json.org/ 를 참조해 주세요.
추가할 내용:왜 "진짜 코드로 해야 할 것 같다"고 생각하는 거죠?그럼 저희가 해결책을 찾는 걸 도와드릴게요.
서버로부터의 정보는 이미 JSON 오브젝트로 평가되고 있는 경우가 있습니다.예를 들어 jQuery get 메서드를 사용하면 다음과 같습니다.
$.get('/service', function(data) {
var obj = data;
/*
"obj" is evaluated at this point if server responded
with "application/json" or similar.
*/
for (var i = 0; i < obj.length; i++) {
console.log(obj[i].Name);
}
});
문자열 리터럴로 변환해야 할 JSON을 사용할 수 .JSON.stringify
:
var json = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
var jsonString = JSON.stringify(json);
이 에는 왜 그냥 수 안 돼요.json
parsing.stringize의 parsing variable이 의 parsing을 해 주세요.
언급URL : https://stackoverflow.com/questions/19239217/json-parse-uncaught-syntaxerror-unexpected-token-o
'source' 카테고리의 다른 글
woocommerce에서 가장 인기 있는 제품의 카테고리 목록을 얻는 방법 (0) | 2023.03.13 |
---|---|
모든 fetch() 요청에 대한 기본 헤더 설정 (0) | 2023.03.13 |
스프링 부트 MVC 템플릿이 로드되지 않음(404를 찾을 수 없음) (0) | 2023.03.13 |
Google 분석:추적 미설치 (0) | 2023.03.13 |
Word Press가 wp_register_script()를 사용할 때 "text/javascript" 대신 "text/roketscript"를 배치하는 이유는 무엇입니까? (0) | 2023.03.13 |