JSON 문자열을 개체로 안전하게 변환

JSON 데이터 문자열을 지정하면 해당 문자열을 JavaScript 개체로 안전하게 변환하려면 어떻게 해야 합니까?

분명히 다음과 같은 방법으로 안전하지 않게 이 작업을 수행할 수 있습니다.

var obj = eval("(" + json + ')'); 

다른 코드를 포함한 JSON 문자열에 취약합니다.단순히 평가하는 것은 매우 위험해 보입니다.



질문에 대한 답변



JSON.parse(jsonString) 는 완전히 최신 브라우저만 보증할 수 있다면 JavaScript 접근법입니다.




이제 jQuery 메서드는 더 이상 사용되지 않습니다.대신 다음 방법을 사용합니다.

let jsonObject = JSON.parse(jsonString); 

사용되지 않는 jQuery 기능을 사용한 원래 답변:

jQuery를 사용하는 경우 다음을 사용하십시오.

jQuery.parseJSON( jsonString ); 

이것이 바로 여러분이 찾고 있는 것입니다(jQuery 설명서 참조).




이 답변은 IE < 7에 대한 것입니다.현대 브라우저의 경우 위의 Jonathan의 답변을 확인합니다.

답변은 구식이므로 위의 Jonathan의 답변()JSON.parse(jsonString)이 현재 최선의 답변입니다.

JSON.org에는 JavaScript용 4가지 언어를 포함한 다양한 언어의 JSON 파서가 있습니다.대부분의 사람들은 json2.js를 goto 구현으로 생각할 것입니다.




JSON.parse()의 간단한 코드 예를 사용합니다.

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}'; var contact = JSON.parse(jsontext); 

그리고 그것을 반전:

var str = JSON.stringify(arr); 



이것이 문제인 것 같습니다.

Ajax websocket 등을 통해 수신되는 입력으로 String 형식이 됩니다만, 이것이 String 형식인지 아닌지는 알 필요가 있습니다.JSON.parsable문제는, 만약 당신이 항상 그걸 훑어본다면JSON.parse, 프로그램이 “성공적”으로 계속 진행되더라도 콘솔에 오류와 함께 무시무시한 오류가 표시됩니다."Error: unexpected token 'x'".

var data;
try {
data = JSON.parse(jqxhr.responseText); } catch (_error) {}
data
(data = {
message: 'Server error, please retry' });