JavaScript 13. JSON

21697 단어 201019201019

JSON

  • JavaScriptObjectNotation
  • 데이터를 저장하고 교환하기 위한 문법
  • 텍스트-기반의 데이터 교환 방식
    • 브라우저와 서버간 데이터 교환은 텍스트만 가능
  • JSON은 자바 스크립트 언어에서 유래
  • 모든 자바 스크립트 객체를 JSON으로 변환 가능
  • JSON을 자바 스크립트 객체로 변환 가능
  • 공식적인 인터넷 미디어 타입은 application/json이며 파일 이름 확장자는 .json

JOSN 형식

  • JavaScript : key값에는 따옴표 X
    • {name:"홍길동", addr:"대전", tel:"010-1234-5678"}
  • JSON object : key값에도 따옴표
    • {"name":"홍길동", "addr":"대전", "tel":"010-1234-5678"}
  • 배열
    • ["홍길동","개나리", "진달래","이도령"]
  • JSON object 배열
    • [{"name":"홍길동", "addr":"대전", "tel":"010-1234-5678"},
      {"name":"홍길동", "addr":"대전", "tel":"010-1234-5678"},
      {"name":"홍길동", "addr":"대전", "tel":"010-1234-5678"}]

JSON으로 표현된 객체

문자, 숫자, 객체(JSON Object), 배열, Booleans, null

{
"name" : "오혁"
,"phone" : "010-1234-5678"
,"age" : 25
,"address" : { "nation" : "Korea"
		,"city" : "Seoul"
		,"postalCode" : "12345"}
,"특기" : ["검술", "무술"]
,"양반" : false
,"아들" : null
}

JSON 메소드

  • JSON.stringify(myObj) : 문자열로 변환(서버로 전송 시)
    var myObj = {name : "John", age:31, city:"New York"};
    var myJSON = JSON.stringify(myObj);
    => "{name : "John", age:31, city:"New York"}"
  • JSON.parse(string, function) : JavaScript객체로 변환
    var myStr= '{name : "John", age:31, city:"New York"}';
    var myJSON = JSON.parse(myStr);
    =>{name:"John", age:31, city:"New York"}

예제1

  • JSON.stringify(myObj) : 문자열로 변환 (서버로 전송 시)!
  • JSON.parse(string, function) : JavaScript 객체로 변환!

html

<body>
	<button type="button" id="btnJson" onclick="proc();">JSON 변환 테스트</button>
	<br><br>
	<div>
	<br>
	1차변환(obj>str): <span id="spJsonStr"></span>
	<br>
	2차변환(str>obj): <span id="spJsonObj"></span>
	<p>이름 : <span id ="spName"></span></p>
	<p>나이 : <span id ="spAge"></span></p>
	<p>생년월일 : <span id ="spBirth"></span></p>
	<p>주소 : <span id ="spAddr"></span></p>
	<p>취미 : <span id ="spHobby"></span></p>
	</div>
</body>

JS

var obj = {
	name : "오혁"
	,age : 20
        ,birth : "1993-10-05"
        ,addr : { city : "서울"
        	, gu : "마포구"
        	, dong: "합정동"
        	, zipcode : "12345"
        }
        ,hobby : ["기타", "노래", "작사", "작곡"]				
};

JS <button type="button" onclick="proc();">JSON 변환 테스트</button> 방법

function proc(){
	//객체를 JSON 스트링으로 변환
	var str = JSON.stringify(obj);
	$("#spJsonStr").html(str);
//문자열을 자바스크립트 객체로 변환
	var obj1 = JSON.parse(str);
	$("#spJsonObj").text(obj1);

	$("#spName").text(obj1.name);
	$("#spAge").text(obj1.age);
	$("#spBirth").text(obj1.birth);
	//$("#spBirth").text(new Date(obj1.birth));
	$("#spAddr").text(obj1.addr.city
			+" "+obj1.addr.gu
			+" "+obj1.addr.dong
			+" "+obj1.addr.zipcode
			);

	var hobby = "";
	
	//취미 방법1. 마지막 ","빼기
	for(var i=0; i<obj1.hobby.length; i++){
		if(i == obj1.hobby.length-1){ // 배열중 마지막이면
			hobby += obj1.hobby[i];
		}else{ //아니면 쉼표를 붙여라
			hobby += obj1.hobby[i] + ", ";
		}
	}
	
    	//취미방법2.  마지막 ","빼기                                    
	for(x in obj1.hobby){
		hobby += obj1.hobby[x] + ", ";
		console.log("취미 : "+hobby);
	}
	hobby = hobby.substr(0, hobby.length-2);
	$("#spHobby").text(hobby);
}

JS <button type="button" id="btnJson>JSON 변환 테스트</button> 방법

$(function(){
	$("#btnJson").click(function(){
		
		//객체를 JSON 스트링으로 변환
		var str = JSON.stringify(obj);
		$("#spJsonStr").html(str);
		
		//JSON 스트링을 객체로 변환
		var obj1 = JSON.parse(str);
		$("#spJsonObj").text(obj1);
		
		$("#spName").text(obj1.name);
		$("#spAge").text(obj1.age);
		console.log(obj1.age);
		$("#spBirth").text(obj1.birth);
		console.log(obj1.birth);
		$("#spAddr").text(obj1.addr);
		$("#spHobby").text(obj1.hobby);

	});
});

결과

좋은 웹페이지 즐겨찾기