본문 바로가기

errorLog

Uncaught SyntaxError: Expected ',' or '}' after property value in JSON

서버에서 전송한 데이터로 자바스크립트에서 JSON.parse를 실행하니 에러가 났다.

확인해본 결과,

 

 

다음과 같이 서버에서 JSON 형식의 데이터를 받아오는 경우:

List<JSONObject> resultList = standardService.selectList();
mv.addObject("resultList", resultList);
return mv;

 

그리고 자바스크립트에서 JSON.parse를 수행하는 경우:

var zNodes = JSON.parse('${resultList}');

 


이 경우 실제로는 다음과 같이 따옴표로 감싸진 문자열이 된다.

 

var zNodes = JSON.parse('[{"id":"data1","pId":"ROOT","name":"data1"}, {"id":"data2","pId":"ROOT","name":"data2"}]');

 

이로 인해 JSON.parse에 유효한 JSON 문자열이 아닌 문자열이 전달되어 에러가 발생한 것이다.
올바른 방법은 다음과 같이 JavaScript 코드에서 서버에서 전달한 JSON 데이터를 직접 사용하는 것이다.

 

var zNodes = ${resultList};

 

이렇게 하면 서버에서 전송된 JSON 데이터가 그대로 JavaScript 코드에 삽입되어 유효한 JSON 형식이 된다.

 

 

 

 


참고로 홑따옴표를 쓰는 것과 안쓰는 것의 차이는 문자열 처리에 있다.

 

홑따옴표를 사용하는 경우:

var data = '${myData}';
  • 문자열 데이터를 JavaScript 변수에 할당할 때 사용
  • 서버에서 받아온 데이터가 문자열일 경우에 주로 홑따옴표를 사용
  • 만약 yourData가 문자열이 아닌 숫자 등의 데이터일 경우에도 사용

 

 

홑따옴표를 사용하지 않는 경우:

var data = ${myData};
  • 서버에서 받아온 데이터를 그대로 JavaScript 변수에 할당
  • 주로 숫자, 불리언, 객체 등의 데이터 타입을 그대로 할당할 때 사용