eval() 함수와 JSON 파싱하기

공공데이터를 다운받아 아래와 같은 정보를 data에 저장했다고 가정해보자.

var data = [
    {"a": 0.6,"b": 0.008,"c": 0.002},
    {"a": 0.8,"b": 0.002,"c": 0.001},
    {"a": 0.9,"b": 0.005,"c": 0.007}
];

이러한 형태로 받으면 좋겠지만 받을수 없다. 원격으로 읽어오는 방식을 사용하면 데이터가 아래와 같이 문자열이 된다...

var data = '[
    {"a": 0.6,"b": 0.008,"c": 0.002},
    {"a": 0.8,"b": 0.002,"c": 0.001},
    {"a": 0.9,"b": 0.005,"c": 0.007}
]';

한 칸 띄고 역슬래시( \ )를 통해 하나의 문자열로 묶을수있다.

var data = '[ \
    {"a": 0.6,"b": 0.008,"c": 0.002}, \
    {"a": 0.8,"b": 0.002,"c": 0.001}, \
    {"a": 0.9,"b": 0.005,"c": 0.007} \
]';

이러한 데이터가 있을때 eval() 함수를 통해 원하는 값을 꺼낼수있다.

    eval("var ar = " + data + ";");

을 통해 ar이라는 배열에 데이터를 배열 형태로 담고~

    alert(ar[0].a); //0.6

ar에서 원하는 값을 선택하면! 값이 나온다.

하지만, JSON문자만 파싱하기 위해서 eval함수 대신 JSON을 전문으로 파싱하는 JSON parser를 사용하자!

좋은 웹페이지 즐겨찾기