Eval함수로 JSON파싱 하기
Eval함수 이용
그림1은 JavaScript 코드로 사용될 수 있는 형태로 되어 있지만 사실 보편적으로 이런 형식으로 데이터를 받지는 않는다.
( +추후에 script에서 원격에 있는 문서를 읽어 오는 방법을 배우될 것이다.)
script로 원격에 있는 문서를 읽어 오면 data 변수안에 Object객체 배열은 String 형태로 가져오게 된다. (JavaScript에서는 문자열 내려쓰기가 인정되지 않기 때문에 문장을 내려 쓸때는 " \" (역슬래시)를 내리기 전 문장 끝에 표가해 주어야 한다.)
그림3과 같은 console.log에 값을 뽑아 낼 수 없다. data안에 fomat은 완벽하게 JSON형식을 따르고 있지만, 변수 데이터는 거대한 하나의 문자열일 뿐이다. data[0] 이라고 하면 문자열 0번째만 나온다. 따라서 .exm_nm 같은 속성을 가진 Object 객체는 없는 것이므로 그림 3의 결과물로 undefine이 출력된다.
어떻게 하면 문자열이아니라. Object 객체의 배열로 사용할 수 있을까?
함수 eval( );
예제 1
그림3은 완벽하게 JavaScript 코드이기 때문에 변수 x의 출력 값으로 30이 나온다.
예제 2
하지만 그림4와 같이 변수x 에 대한 정의를 문자열로 넘겨 받는 경우가 있다. 그때 그 문자열을 JavaScript로 실행하기 위해서 필요한 것이 eval( )함수이다.
예제 3
실제로 변수 x가 출력된 모습을 볼 수 있다.
eval( ) 함수를 사용해서 파싱
Eval( )은 JavaScript를 실행시켜 주기 위한 함수이다.
JSON형식으로 된 문자열을 넘겨 받는 경우 그 data를 쓰기 위해서는 파싱을 해야하는데, 파싱을 하기위해서 eval이라는 함수를 사용할 수도 있다. eval은 JSON과 상관 없이 JavaScript에서 보편적으로 코드를 넘겨 받아서 실행 하는 도구 로써 사용할 수 있다. 이걸 잘 만 이용하면 JSON 데이터를 파싱하는 경우에도 사용할 수 있다.
[출처 - https://youtu.be/eAAxma2f4fM]