• 회원가입
  • 로그인
  • 구글아이디로 로그인

[JSON] JS - JSON - JSON.parse() 함수 ★ - (JSON문자열 → JS객체) 변환. (= 웹서버와 데이터 교환해 가져온 데이터를 복원)

개괄


JSON은 웹 서버와 데이터를 교환하는 데 주로 사용. 

웹 서버에서 데이터를 수신 할 때 데이터는 항상 문자열임. 

JSON.parse() 사용하여 데이터를 파싱하면 데이터가 기본적으로 JS 객체로 반환됨. (예외도 있음)

 

 

 

 

예제1 - JSON 파싱 기본 형태

 

<!DOCTYPE html>

<html>

<body>


<p id="hz"></p>


<script>

var txt = '{"name":"홈짱닷컴", "domain":"Homzzang.com", "year":2012}'

var obj = JSON.parse(txt);

document.getElementById("hz").innerHTML = obj.name + ", " + obj.domain + ", " + obj.year;

</script>


</body>

</html>


결과값: 홈짱닷컴 Homzzang.com 2012

※ txt 변수에 들어간 내용을 웹서버에서 가져왔단 가정.
※ 텍스트가 JSON 형식 구문이 아닌 경우 에러 발생 함.

 

 

 

예제2 - JSON 파싱 (JS 객체 반환)


test.js 내용

{

    "name":"홈짱닷컴",

    "domain": "Homzzang.com",

    "since": 2012,

    "subject":[

        { "subject":"HTML", "intro":"홈페이지 뼈대" },

        { "subject":"CSS", "intro":"홈페이지 디자인" },

        { "subject":"JS", "intro":"홈페이지 동적기능" }

    ]

}

 

 

<!DOCTYPE html>

<html>

<body>


<p id="homzzang"></p>


<script>

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {

    if (this.readyState == 4 && this.status == 200) {

        var hz = JSON.parse(this.responseText);

        document.getElementById("homzzang").innerHTML = 

            hz.name + " " + hz.domain + " " + hz.since;

    }

};

xmlhttp.open("GET", "test.js", true);

xmlhttp.send();


</script>


</body>

</html>

 

 

 

 

예제3 - 배열 파싱 (JS 배열 반환)


test.js 내용

[ "홈짱닷컴", "Homzzang.com", 2012]

 


<!DOCTYPE html>

<html>

<body>


<p id="homzzang"></p>


<script>

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {

    if (this.readyState == 4 && this.status == 200) {

        var hz = JSON.parse(this.responseText);

        document.getElementById("homzzang").innerHTML = 

            hz[0] + " " + hz[1] + " (Since " + hz[2]+ ")";

    }

};

xmlhttp.open("GET", "test.js", true);

xmlhttp.send();

</script>

 

</body>

</html>

 

 

 

 

예외

 

 

 

예외1 - 날짜 파싱 (문자열로 파싱 후, 나중에 다시 날짜 형식으로 변환) 

 

 

Date 객체는 JSON에서 사용할 수 없음.


날짜를 포함해야하는 경우, 이를 문자열로 표기.


나중에 다시 날짜 객체로 변환 가능

 

 
방법1


<!DOCTYPE html>

<html>

<body>


<p id="homzzang"></p>


<script>

var text = '{"site":"홈짱닷컴", "domain":"Homzzang.com", "today":"2018-08-11"}';

var hz = JSON.parse(text);

hz.today = new Date(hz.today);

document.getElementById("homzzang").innerHTML = 

   hz.site + ", " + hz.domain + ", " + hz.today; 

</script>


</body>

</html>

 


방법2 - json.parse 함수의 두 번째 매개변수 활용

 

 

<!DOCTYPE html>

 

<html>

<body>


<p id="homzzang"></p>


<script>

var text = '{"site":"홈짱닷컴", "domain":"Homzzang.com", "today":"2018-08-11"}';

var hz = JSON.parse(text, function (key, value) {

    if (key == "today") {

        return new Date(value);

    } else {

        return value;

    }});

document.getElementById("homzzang").innerHTML = 

   hz.site + ", " + hz.domain + ", " + hz.today; 

</script>


</body>

</html>

 

 

 

 

예외2 - 함수 파싱 (문자열로 파싱 후, 나중에 다시 함수로 변환)

 

 

함수는 JSON에서 사용할 수 없음. (왜냐면, 함수가 그 적용 범위를 잃음)


함수를 포함해야하는 경우, 이를 문자열로 표기.

 

나중에 eval() 메서드 이용해 다시 함수로 변환 가능

 

 

<!DOCTYPE html>

<html>

<body>


<p id="homzzang"></p>


<script>

var text = '{"site":"홈짱닷컴", "domain":"Homzzang.com", "since":"function() {return 2012;}"}';

var hz = JSON.parse(text);

hz.since = eval("(" + hz.since + ")");

document.getElementById("homzzang").innerHTML = 

   hz.site + ", " + hz.domain + ", " + hz.since()

</script>


</body>

</html>


 

 

 

 

지원 브라우저

 

JSON.parse () 함수는 모든 주요 브라우저와 최신 ECMAScript (JavaScript) 표준에 포함되어 있음.

 


Web Browsers Support

Firefox 3.5

Internet Explorer 8

Chrome

Opera 10

Safari 4

 


구형 브라우저의 경우,
https://github.com/douglascrockford/JSON-js 에서 JS 라이브러리 사용

 



분류 제목
String JS - concat() 메서드 ★ - 문자열결합 (= 문자열합치기 = concat메서드 = 컨캣메서드)
String JS - endsWith() 메서드 - 지정문자열로 끝나는지(=종료) 여부 (IE12이상)
String JS - fromCharCode() 메서드 - 유니코드를 문자열로 변환
String JS - includes() 메서드 ★ - 지정문자열포함여부 (= includes메서드 = 인클루드즈메서드)
String JS - indexOf() 메서드(문자열) ★ - 처음일치문자열위치찾기 (= 문자열포함검사 = 인덱스어브메서…
String JS - lastIndexOf() 메서드(문자열) ★ - 마지막일치문자열위치찾기 (= 문자열포함검사 = 라스…
String JS - localeCompare() 메서드 - 문자열순서비교
String JS - match() 메서드 ★ - 일치하는 문자열 반환 (= match메서드 = 매치메서드) ※ 정규식 …
String JS - repeat() 메서드 - 지정횟수만큼 문자열반복 (= 리피트)
String JS - replace() 메서드(String용) ★ - 문자열 대체 (= replace메서드 = 리플레이스…
String JS - search() 메서드 - 문자열위치찾기 ※ 문자열포함검사
String JS - slice() 메서드 - 문자열 자르기 (= 문자열 일부 추출 = slice메서드 = 슬라이스 메서…
String JS - split() 메서드 - 문자열 쪼개기 (= split메서드 = 스플릿 메서드) ※ 이메일숨기기 (…
String JS - startsWith() 메서드 - 지정문자열로 시작 여부 (IE12이상)
String JS - substr() 메서드 ★ - 문자열 자르기 - 문자열의 특정 위치 이후의 특정 길이 만큼 반환
String JS - substring() 메서드 ★ - 문자열 일부 추출 (= 문자열 자르기 = substring메서드…
String JS - toLocaleLowerCase() 메서드 - 로캘 소문자로 변환
String JS - toLocaleUpperCase() 메서드 - 로캘 대문자로 변환
String JS - toLowerCase() 메서드 - 소문자로변환
String JS - toString() 메서드 (문자열경우) - 문자열타입으로 변경 (= toString메서드 = 투스…
6/67
목록
찾아주셔서 감사합니다. Since 2012