JSON 데이터 문자열이 주어지면 어떻게 해당 문자열을 JavaScript 객체로 안전하게 바꿀 수 있습니까?
분명히 나는 다음과 같이 안전하지 않게 이것을 할 수 있습니다 :
var obj = eval("(" + json + ')');
그러나 그것은 다른 코드를 포함하는 JSON 문자열에 취약하게 만듭니다. 단순히 평가하는 것은 매우 위험합니다.
답변
JSON.parse(jsonString)
최신 브라우저를 보장 할 수있는 한 순수한 JavaScript 방식입니다.
답변
jQuery 메소드는 더 이상 사용되지 않습니다. 대신이 방법을 사용하십시오.
let jsonObject = JSON.parse(jsonString);
더 이상 사용되지 않는 jQuery 기능을 사용한 원래 답변 :
jQuery를 사용하는 경우 다음을 사용하십시오.
jQuery.parseJSON( jsonString );
정확히 당신이 찾고있는 것입니다 (jQuery documentation 참조 ).
답변
이 답변은 IE <7에 대한 것이며 최신 브라우저의 경우 위의 Jonathan의 답변을 확인하십시오.
이 답변은 구식이며 위의 Jonathan의 답변 ( JSON.parse(jsonString)
)이 이제 가장 좋습니다 .
JSON.org 에는 JavaScript에 대한 네 가지 언어를 포함하여 여러 언어에 대한 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);
답변
다른 방법에 대해서는 잘 모르겠지만 프로토 타입 (JSON 튜토리얼) 에서 수행하는 방법은 다음과 같습니다 .
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
evalJSON()
인수로 true를 호출 하면 수신 문자열이 삭제됩니다.
답변
이것은 문제인 것 같습니다.
Ajax websocket 등을 통해 수신 된 입력은 문자열 형식이지만 입력 여부는 알아야합니다 JSON.parsable
. 문제는 항상 프로그램을 통해 실행 JSON.parse
하면 프로그램이 “성공적으로”계속 될 수 있지만 여전히 콘솔에 dreaded 오류가 표시되는 것 "Error: unexpected token 'x'"
입니다.
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});
답변
jQuery를 사용하는 경우 다음 을 사용할 수도 있습니다.
$.getJSON(url, function(data) { });
그럼 당신은 같은 일을 할 수 있습니다
data.key1.something
data.key1.something_else
기타