>  기사  >  웹 프론트엔드  >  JSON.parse(), JSON.stringify() 및 eval() 사용 방법에 대한 자세한 설명

JSON.parse(), JSON.stringify() 및 eval() 사용 방법에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-04-25 13:37:552029검색

이번에는 JSON.parse(), JSON.stringify(), eval() 사용법에 대해 자세히 설명하고, JSON.parse(), JSON.stringify(), 사용 시 주의사항은 무엇인지 가져왔습니다. 다음은 실제 사례입니다. 살펴보겠습니다.

"JSON(JavaScript Object Notation)은 경량 데이터 교환 형식입니다. ECMAScript의 하위 집합을 기반으로 합니다. 언어 독립적인 텍스트 형식을 채택하기 때문에 C 언어 계열과 유사한 습관도 사용합니다. JSON은 인간이 쉽게 읽고 쓸 수 있고, 기계가 쉽게 구문 분석하고 생성할 수 있는 이상적인 데이터 교환 언어입니다. (일반적으로 네트워크 전송 속도를 향상시키는 데 사용됩니다.) JSON.parse() 및 JSON.stringify() 함수 내부에는 그런데 네이티브 JS의 eval() 함수도 언급하겠습니다

(1) JSON.parse 함수 함수: JavaScript 개체를 나타냅니다. (JSON)

String

객체로 변환합니다.구문: ​​JSON.parse(텍스트 [, 부활])

매개변수:

text 필수입니다. 유효한 JSON 문자열입니다.

reviver  선택사항. 결과를 변환하는 함수입니다. 이 함수는 개체의 각 구성원에 대해 호출됩니다.

반환 값: 객체 또는 배열


예:

var json = '{"name":"GDT","age":,"University":"GDUT"}';
var info = JSON.parse(json);  //解析为JSON对象
document.write(info.name + ' is a student of ' + info.University + ' and he is ' + info.age + " years old."); /info为Object对象

(2) JSON.stringify() 함수 함수: JavaScript 값을 JavaScript Object Notation(JSON) 문자열로 변환

구문: ​​JSON.stringify ( value [, replacement] [, space])

매개변수:

value  필수, 일반적으로 변환해야 하는 JavaScript 값(일반적으로 객체 또는 배열)

replacer  선택, 결과 또는 배열을 변환하는 데 사용되는 함수

space  선택사항. 읽기 쉽도록 반환 값 JSON 텍스트에 들여쓰기, 공백 및 줄 바꿈을 추가합니다.

반환값: JSON 텍스트가 포함된 문자열

예:

var info = {name:"GDT",age:,University:"GDUT"};
var json = JSON.stringify(info); //转换为JSON字符串
document.write(json); //output为{"name":"GDT","age":23,"University":"GDUT"}

(3) eval() 함수 함수: eval() 함수는 특정 문자열을 계산하여 JavaScript 코드를 실행할 수 있습니다.

구문: ​​eval(string)

매개변수:

string 필수, 계산할 문자열로, 계산할 JavaScript

표현식

또는 실행할 문이 포함되어 있습니다. 반환 값: 계산된 문자열의 값이 있으면 반환(그렇지 않으면 변경 없이 반환)

예:

eval("x=;y=;document.write(x*y)"); //output为
document.write(eval("+"));  //output为
var x=;
document.write(eval(x+));  //output为

eval() 함수를 사용하면 JSON 문자열을 객체로 구문 분석할 수도 있습니다. 함수를 완성할 수 있습니다. JSON.parse()의 함수이지만 차이점이 있습니다. 아래 코드를 참조하세요

// JSON.parse()
var json = '{"name":"GDT","age":,"University":"GDUT"}';
var info = JSON.parse(json);    //解析为JSON对象
document.write(info); //output为[object Object]
//eval()
var json = '{"name":"GDT","age":,"University":"GDUT"}';
var info = eval('(' + json + ')'); //解析为JSON对象
document.write(info); //output为[object Object]

eval()도 문자열을 감싸기 위해 괄호 쌍을 사용한다는 사실을 눈치채셨는지 모르겠습니다. 이것을 찾고 있습니다. 더 나은 설명은 다음과 같습니다.

이유: eval 자체의 문제로 귀결됩니다. json은 "{}"로 시작하고 끝나기 때문에 JS에서는 명령문 블록으로 처리되므로 반드시 표현식으로 변환하는 것은 필수입니다.

해결책: 괄호를 추가하는 목적은 JavaScript 코드를 처리할 때 명령문으로 실행하는 대신 eval 함수가 괄호 안의 표현식을 객체로 변환하도록 강제하는 것입니다. 예를 들어 객체 리터럴 {}을 사용하면 외부 대괄호가 추가되지 않으면 eval은 중괄호를 JavaScript 코드 블록의 시작 및 끝 표시로 인식하고 {}는 빈 문을 실행하는 것으로 간주됩니다. 다음 예에서 차이점을 확인하세요.

alert(eval("{}")); // return undefined
alert(eval('('+'{}'+')')); // return object[Object]

또한 엄격한 쓰기 형식을 사용하는 JSON.parse()와 비교하면 eval()은 상대적으로 느슨하고 잠재적으로 안전하기 때문에 모든 문자열을 구문 분석할 수 있습니다. 예를 들어 다음 코드는

var str = '{"a":"b"}';
document.write(eval("("+str+")")); //正常解析为对象
var str = '{"a": (function(){alert("I can do something bad!");})()}';
eval('('+str+')'); //可以用来执行木马脚本

악의적인 사용자가 페이지에 트로이 목마 링크를 삽입하는 스크립트를 json 문자열에 삽입하는 경우 eval로도 동작이 가능하지만 이 문제는 걱정하지 않으셔도 됩니다. JSON.parse() eval() 함수는 매우 강력하지만 실제로 사용할 기회가 많지 않음을 알 수 있습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

JQuery는 사이드바 메뉴를 구현합니다

jquery는 썸네일을 클릭하여 재생 효과를 전환합니다

위 내용은 JSON.parse(), JSON.stringify() 및 eval() 사용 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.