본문 바로가기
낙서장/ajax

JSON 표기법

by "뭉치" 2021. 8. 8.
728x90

 

JSON이란

 

JavaScript Object Notation 의 약자로 서로 다른 프로그래밍 언어 간에 데이터를 교환하기 위한 표기법으로 읽고 쓰기 쉽도록 고안해낸 데이터 표기법이다.

 

표현 방법

 

대부분의 언어에서 친숙하게 사용되고 있는 구조로 이루어져 있으며 크게 2가지의 표현 방법을 사용하고 있다.

 

{ 이름:, ... }

[배열]

혼합형

 

이름:값 유형

 

과일을 "이름:"으로 정의하고 사용해 보도록 하자.

<script>
var fruits={apple:'사과', banana:'바나나', melon:'메론', watermelon:'수박'}


// 이름으로 가져오기
document.write("apple -->" + fruits.apple + "<br>");
document.write("banana -->" + fruits.banana + "<br>");
document.write("melon -->" + fruits.melon + "<br>");
document.write("watermelon -->" + fruits.watermelon + "<br>");
</script>

 

위와 같이 객체.이름 형태로 그 값을 불러올 수 있으며 이름을 배열의 요소값으로 사용할 수 도 있다.

 

<script>
var fruits={apple:'사과', banana:'바나나', melon:'메론', watermelon:'수박'}


// 배열첨자로 가져오기
document.write("apple -->" + fruits['apple'] + "<br>");
document.write("banana -->" + fruits['banana'] + "<br>");
document.write("melon -->" + fruits['melon'] + "<br>");
document.write("watermelon -->" + fruits['watermelon'] + "<br>");
</script>

 

배열 유형

 

자바스크립트에서 배열의 초기값을 지정할때는 {}를 사용하지만 JSON 표기법에서는 []를 사용하여 배열을 정의한다.

 

<SCRIPT LANGUAGE="JavaScript">
var mountine=['백두산','지리산','한라산','설악산'];
for(i=0 ; i<mountine.length ; i++){
document.write(mountine[i] + "<br>");
}
</SCRIPT>

 

혼합형

 

이름:값 유형과 배열 유형을 혼합하여 사용할 수도 있다. 위 예제에서 사용되었던 fruitsmountine의 객체를 하나로 합하는 예를 사용해 보자.

 

전체적인 구조는 이름:값 형태를 취하고 배열형 또한 배열명:[] 형태로 변경하면 된다.

var mountineFruits = {
apple:'사과', banana:'바나나', melon:'메론', watermelon:'수박',
mountine:['백두산','지리산','한라산','설악산']
};

 

접근 방법을 살펴 보도록 하자.

str = "apple = " + mountineFruits.apple + "<br>";


for(i=0 ; i<mountineFruits.mountine.length ; i++){
str += (mountineFruits.mountine[i] + "<br>");
}
rs.innerHTML =str;

 

JSON을 사용한 클래스 정의

 

JSON 표현식을 사용하지 않고 클래스를 정의하려면 아래와 같이 prototype을 따로 정의해야 했다.

 

MyClass = function(){ ... }

MyClass.prototype.setName = function(){ ... }

MyClass.prototype.setAge = function(){ ... }

MyClass.prototype.setAddress = function(){ ... }

 

위의 소스를 JSON 표현법을 사용하여 정의하면 아래와 같다.

 

// ---------------------------------------
// JSON을 이용한 객체 정의
// ---------------------------------------
// 클래스 정의
MyClass = function(){


}


// 메서드를 JSON 표현법으로 정의
MyClass.prototype ={
setName:function(n){
this.name = n;
},


setAge:function(a){
this.age = a;
},


setAddress:function(a){
this.address = a;
}
}


// MyClass를 사용하여 객체를 생성하고 메서드를
// 사용하여 값을 저장한후 출력하는 함수 정의
function first(){
var str = "";
var rs = document.getElementById("result"); // resultDIV태그의 ID


mc = new MyClass();
mc.setName("itdocument");
mc.setAge(10);
mc.setAddress("대한민국");




str = "Name : " + mc.name + "<br>";
str += "Age : " + mc.age + "<br>";
str += "Address : " + mc.address;


rs.innerHTML =str;
}

 

 

 

* 기타 자세한 사항은 JSON 관련 사이트를 방문하여 살펴 보기 바란다.

(http://www.json.org/json-ko.html)

 


고급 프로그램을 보면 자바 스크립트를 적극적으로 수용하여 여러개의 데이타를 이동시키거나 적용할때

하나하나 할때 힘드니까 객체에다가 때려넣어서 하나에 객체를 가지고 와서 핸들링 하면 편하잖아.

 

하나의 클레스에서 핸들링해야 될 것이 여러개 인데 하나씩 하면 힘드니까.

하나만 핸들링 하면 통째로 핸들링 할 수 있도록 프로그램이 돌아갑니다.

 

JSON표준 방법이 제일 쉬운 표현 방법입니다. (json1.jsp )

 

json2.jsp => 혼합형.

(위와 같이 선언한 가운데 [ n,a,r,d]이런식으로 그 하나를 2차원 배열? 로 선언하여 값을 가져올수 있다.)

 

jsonClass =>

스크립트를 이런 내용들을 담아서 js로 담아서 불러다 쓸수 있겠지만,

우리가 일반적으로 패키지 명으로 해서 객체를 만든다던가.. 되지 않으니까..

 

객체 라기 보다는 준객체.

 

setter,getter와 비슷하지만 java내에서 그렇게 돌아주는것은 아니라는 겁니다~

728x90

댓글