몰입하며 나아가는 개발이란

Algorithm, Data Structure/XML and JSON

JSON이란?

류하을 2020. 1. 15. 22:07

JSON이란?

Java Script Object Notation 의 약자이며, 직역하면 자바스크맆트 객체 표기법 이다.

JSON 표기법은 사람과 기계 모두 이해하기 쉬우며 용량이 작다는 장점이 있다.

JSON의 구조는 Array(배열)와 흡사하며, 2차원 배열 이라고 이해하면 쉽게 이해할 수 있다.

Array[Number][KEY] 형태로 보면 "몇번째 어떤키값"으로 데이터를 찾을 수 있어 상당히 직관적인것이 장점이다.

구두로 말을 뱉음과 동시에 어떠한 데이터인지 명확하게 알 수있다. "몇번째에 있는 어떤 데이터를 찾고 싶은가?"


JSON 작성방식

[]괄호 안에 {}괄호가 하나의 객체(row)이며, 하나의 객체(row)는 KEY와 VALUE를 PAIR를 이루어 필드값으로 존재 한다.

쉽게 말해 2차원 배열 형태이며, 안쪽값은 PAIR형태를 띄고있다고 보면 이해하기 쉽다.

[
	{
		"name":"홍길동",
		"age":24,
		"address":"서울시",
		"phone":"123"
	},
	{
		"name":"성춘향",
		"age":17,
		"address":"남원시",
		"phone":"234"
	},
	{
		"name":"홍두께",
		"age":22,
		"address":"강릉시",
		"phone":"345"
	}
]

JSON 사용하기

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<p id="demo"></p>

<script type="text/javascript">
/* 
var arr = [ 1, 2, 3 ];
var arr2 = [ [1, 2], [3, 4] ];
 */

var arr = [		/* Json */
	{
		"name":"홍길동",
		"age":24
	},
	{
		"name":"일지매",
		"age":21
	},
	{
		"name":"성춘향",
		"age":17
	}
];

document.getElementById("demo").innerHTML 
//	= arr[0].name + " " + arr[0].age;
	= arr[1]["name"] + " " + arr[1]["age"];


// String(Json이 아니다)	
var arrText = '{ "name":"홍길동", "age":24, "주소":"서울시" }';

var jsonObj = JSON.parse(arrText);		// String -> json
var str = JSON.stringify(jsonObj); 		// json -> String

document.getElementById("demo").innerHTML 
	= jsonObj.name + " " + jsonObj.age + " " + jsonObj.주소;

</script>

</body>
</html>

XMLHttpRequest JSON 연결

XMLHttpRequest 객체를 텍스트로 받아 JSON.parse 하여 사용한다.

접근 방법은 위에서 말한것과 같이 arr[i].Key 즉, arr객체의 i번째 Key로 접근 할 수있다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<p id="demo"></p>

<script type="text/javascript">

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function () {
	if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
		jsonFunc( xmlhttp.responseText );
	}	
}
xmlhttp.open("GET", "jsondata.json", true);
xmlhttp.send();

function jsonFunc( resp ) {
	var arr = JSON.parse( resp );	// json으로 만들어 준다
	var txt = "";
	alert(arr.length);
	
	// key:value를 취득
	/*
	for(i = 0;i < arr.length; i++){
		for(key in arr[i]){
			txt += key + ":" + arr[i][key];
		}
		txt += "<br>";
	}
	*/
	for(i = 0;i < arr.length; i++){
		txt += arr[i].name + " " +
				arr[i].age + " " +
				arr[i].address + " " +
				arr[i].phone + "<br>"; 		
	}
	
	document.getElementById("demo").innerHTML = txt;
}
</script>

</body>
</html>