문제
주어진 문자열의 JSON 데이터,어떻게 할 수 있는 안전하는 문자열로 JavaScript object?
분명히 당신이 할 수 있다 추가...
var obj = eval("(" + json + ')');
...하지만 우리가 나뭇잎에 취약 json 문자열을 포함하는 다른 코드,그것은 매우 위험한 단순히 eval.
해결책
JSON.parse(jsonString)
는 순수 자바 스크립트의 접근 방식을 보장할 수 있는 합리적으로 현대적인 브라우저입니다.
다른 팁
JQuery 방법은 이제 더 이상 사용되지 않습니다.대신 이 방법을 사용:
let jsonObject = JSON.parse(jsonString);
원래 사용하여 응답되지 않는 기능 jQuery:
를 사용하는 경우 jQuery 사용:
jQuery.parseJSON( jsonString );
그것은 정확히 무엇을 찾고 있다(참조 jQuery 문서).
사용이 간단한 코드로 표시되는 다음 링크에 MSDN.
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
과 역방향
var str = JSON.stringify(arr);
나는 확실하지 않는 다른 방법에 대해 그것을 할 수 있지만 여기는 어떻게 당신이 그것에 시제품(JSON tutorial).
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
전화 evalJSON() 진정한 인수로 삭제합니다.
이 될 것으로 보인 문제점:
입력 받은 ajax 를 통해 websocket 등이며,그것은 항상에는 문자열 형식을-하지만 당신은 알 필요가 있다면 그것은 JSON.상자를 계산.방해를 일삼고 있는데,요즘은,는 경우에 당신은 항상 그것을 실행을 통해 JSON.구문 분석,프로그램을 계속할 수 있도'성공적으로'하지만 당신은 여전히 발생한 오류는 콘솔에서 지칠대로 지친"오류가:예기치 않은 토큰'x'".
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});
를 사용하는 경우 jQuery, 할 수도 있습 do $.getJSON(url, function(data) { });
당신은 다음과 같이 할 수 있습니다 data.key1.something
, data.key1.something_else
, 니다,등등.
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
콜백을 전달 반환되는 데이터가 될 것입니다 JavaScript 체 또는 배열에 의해 정의된 대로 JSON 구조와 사용하여 구문 $.parseJSON()
방법입니다.
그냥 재미를위한,여기에는 이 방법을 사용하여 기능:
jsonObject = (new Function('return ' + jsonFormatData))()
도를 사용하는 방법으로 이 데이터를 객체입니다.ex:Data='{result:true,count:1}
'
try {
eval('var obj=' + Data);
console.log(obj.count);
}
catch(e) {
console.log(e.message);
}
이 방법은 정말에 도움이 됩 및 라이브러리 작업을 할 때는 시리얼 포트는 프로그래밍
사용.을 분석 아마도 최선의 방법입니다.여기에 예 라이브 데모
var jsonRes = '{ "students" : [' +
'{ "firstName":"Michel" , "lastName":"John" ,"age":18},' +
'{ "firstName":"Richard" , "lastName":"Joe","age":20 },' +
'{ "firstName":"James" , "lastName":"Henry","age":15 } ]}';
var studentObject = JSON.parse(jsonRes);
내가 찾은"좋은"방법:
에서 커피 스크립트:
try data = JSON.parse(jqxhr.responseText)
data ||= { message: 'Server error, please retry' }
에서 자바스크립트:
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});
JSON.parse(jsonString);
json.분석으로 변경됩 개체입니다.
JSON 분석은 항상 고통에서 엉덩이입니다.는 경우에 입력하지 않으로 예상되 그것은 오류가 발생하고 충돌은 당신이 무엇을하고있습니다.다음을 사용할 수 있습니다 작은 기능 안전하게 분석합니다.그것은 항상 밝은 개체는 경우에도 입력이 유효하지 않거나 이미 개체 위해 더 나은 대부분의 경우입니다.
JSON.safeParse = function (input, def) {
// Convert null to empty object
if (!input) {
return def || {};
} else if (Object.prototype.toString.call(input) === '[object Object]') {
return input;
}
try {
return JSON.parse(input);
} catch (e) {
return def || {};
}
};
변환 개체 JSON,다음 분석,그것이 나를 위해,다음과 같:
JSON.parse(JSON.stringify(object))
가 있는 경우 문자열은 다음과 같다:"{\"상태\":1,\"토큰\":\"65b4352b2dfc4957a09add0ce5714059\"}" 그런 다음 우리는 단순히 사용 JSON.분석 두번 변환하는이 문자열을 JSON 개체:
var sampleString = "{\"status\":1,\"token\":\"65b4352b2dfc4957a09add0ce5714059\"}"
var jsonString= JSON.parse(sampleString)
var jsonObject= JSON.parse(jsonString)
단순히 우리가 값을 추출할 수 있 JSON 에서 사용하는 개체:
// instead of last JSON.parse:
var { status, token } = JSON.parse(jsonString);
결과는:
status = 1 and token = 65b4352b2dfc4957a09add0ce5714059
JSON.parse()로 변환 모든 JSON 문자열로 전달 기능,JSON 개체입니다.
에 대한 더 나은 이해를 누르 F12 을 열 요소 검사의 브라우저로 이동하는 콘솔에 쓰는 다음과 같은 명령:-
var response = '{"result":true,"count":1}'; //sample json object(string form)
JSON.parse(response); //converts passed string to JSON Object.
이제 다음 명령을 실행합니다.-
console.log(JSON.parse(response));
당신을 얻을 것으로 출력체{결과:사실,개수:1}.
을 사용하기 위해서는 객체를 할당할 수 있습니다 그것은 변수로 말하자 obj:-
var obj = JSON.parse(response);
지금 사용하여 obj 및 점(.) 운영자에 액세스할 수 있는 속성의 JSON 개체입니다.
을 실행하려고 하는 명령
console.log(obj.result);
공식적으로 문서화:
이 JSON.parse()
방법은 분석 JSON 문자열을 구성하 JavaScript 값 또는 객체에 의해 설명의 문자열입니다.선택 reviver
기능 제공될 수 있습니다 수행에 대한 변환의 결과로 개체 반환하기 전에.
구문
JSON.parse(text[, reviver])
매개변수
텍스트
문자열을 분석하 JSON 으로.JSON 개체에 대한 설명 JSON 문입니다.
자극성(옵션)
함수의 경우,이 규정이 어떻게 원래 값에 의해 생산 분석이 변환되기 전에,반환됩니다.
반환 값
에 해당하는 객체에 주어진 JSON 텍스트입니다.
예외
가 발생 SyntaxError 예외는 경우 문자열을 분석하는 것은 유효하지 않 JSON.
사용할 수도 있습니다 reviver
기능 필터링합니다.
var data = JSON.parse(jsonString, function reviver(key, value) {
//your code here to filter
});
자세한 내용을 읽 JSON.구문 분석
이전 질문에,나도,그러나 아무도 알 수 있는 이 솔루션을 사용하여 new Function()
, 익명하는 기능 데이터를 반환합니다.
단지 예:
var oData = 'test1:"This is my object",test2:"This is my object"';
if( typeof oData !== 'object' )
try {
oData = (new Function('return {'+oData+'};'))();
}
catch(e) { oData=false; }
if( typeof oData !== 'object' )
{ alert( 'Error in code' ); }
else {
alert( oData.test1 );
alert( oData.test2 );
}
이것이 조금 더 안전하기 때문에 그것이 내부에서 실행되는 기능과 컴파일하지 않는 코드에서 직접.그래서 기능이 있으면 선언은 그 안에 되지 않을 것입니다 바인딩 기본 윈도우 객체입니다.
내가 이것을 사용하여 컴파일간의 설정이 필요합니다.DOM 요소에(예를 들어 데이터 특성)간단하고 빠르다.
분석 json 문자열과 함께 JSON.parse(),과 데이터를 JavaScript 개체입니다.
JSON.parse(jsonString)
여기에,JSON 대표하는 프로세스 json 합니다.
를 들어, 우리가 상상을 받았 이 텍스트에서는 웹 서버:
'{ "name":"John", "age":30, "city":"New York"}'
분석으로 json 개체:
var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
여기에 obj 은 해당 JSON 는 모습은 다음과 같습니다.
{ "name":"John", "age":30, "city":"New York"}
가 값을 사용합니다.연산자를 들어:
obj.name // John
obj.age //30
전송하는 반대로 변환 JavaScript 개체 문자열로 JSON.변환().
요약:
자바스크립트(모두 브라우저 및 라이브러리)가 내장 JSON
체입니다.이는 개체 2 편리한 방법을 다루고 JSON
.그들은 다음과 같습니다:
JSON.parse()
립JSON
으로 인수,반환 JS 체JSON.stringify()
소 JS 개체수익JSON
체
다른 응용 프로그램:
또한 매우 편리하게 처리 JSON
그들은 사용할 수 있습니다.이 둘의 조합 JSON
방법할 수 있도록 우리를 매우 쉽게 깊은 클론의 배열 또는 개체입니다.예를 들어:
let arr1 = [1, 2, [3 ,4]];
let newArr = arr1.slice();
arr1[2][0] = 'changed';
console.log(newArr); // not a deep clone
let arr2 = [1, 2, [3 ,4]];
let newArrDeepclone = JSON.parse(JSON.stringify(arr2));
arr2[2][0] = 'changed';
console.log(newArrDeepclone); // A deep clone, values unchanged
는 경우에 자바스크립트에서 Mootools 의 이 JSON.parse
는 익명으로 프레임워크에 의해.
유효한 구문 을 안전하게 도는 JSON 문자열로체
야:
var object = JSON.decode(string[, secure]);
또한 JSON Request
입을 올릴 수 있는 객체의 구문을 분석할 수 있다.
할 수 있습 cek 어떻게 차례 json 원시 데이터 여기:
려고 합니다.이 중 하나에 기록된 타이프 라이터.
export function safeJsonParse(str: string) {
try {
return JSON.parse(str);
} catch (e) {
return str;
}
}