20121102_[자료]JSON

Download Report

Transcript 20121102_[자료]JSON

2012.9.27
[email protected]
영화 “13일의 금요일” 주인공 제이슨(Jason)
1. JSON이란?
(1) JSON이란?
- JSON : JavaScript Object Notation
(2) JSON에 대한 설명
-JSON 공식 사이트(http://www.json.org)에서의 JSON 설명
“JSON(JavaScript Object Notation)는 경량의 데이터 교환 포맷이다.
인간에게 있어서 읽고 쓰기가 용이하고, 기계에 있어서도 간단하게 파싱이나 생성을 행할 수 있는 형식이다.
JavaScript 프로그램 언어(ECMA-262 표준 제 3판 1999년 12월)의 일부를 베이스로 만들어져 있다.
JSON(은)는 완전하게 언어로부터 독립한 텍스트 형식이지만,
C,C++,C#,Java,JavaScript,Perl,Python, 그 외 많은 C패밀리의 언어를 사용하는프로그래머에게 있어서는,
친숙한규약이 사용되고 있다.이러한 성질이,JSON를 이상적인 데이터 교환 언어로 하고 있다.”
-JSON 관련 사이트에서 JSON 설명
“영어 그대로 해석하자면 자바스트립트를 객체형식으로 표현하는 것이다.
JSON은 XML보다 빠르고 변환하기도 쉬워 많이 대체해서 쓰고 있다.
적은양의 데이터가 송수신 되므로 모바일쪽에서 쓰기에도 부담이 적다.”
“JSON은 이종 시스템간 데이터 교환시에 사용할 수 있는 이상적인 방법이다.
JSON은 자바스크립트에 기반하고 있기 때문에 모든 웹 브라우저에서 호환 된다고 할 수 있다.”
2. JSON의 표기법(Notation)
- JSON 데이터는 key/value (name/value) 형식으로 구성
“name" : “황상규”
- 자바스크립트 문법으로 표현하면
name = “황상규"
데이터 타입
표현 방법
예
number
Integer 또는 float
“number" : 1
string
큰 따옴표로 묶음
"name" : “황상규”
boolean
true 또는 false
“isResult" : true
object
여러 개의 key/value를 입력하여 중괄호로 묶음
{“name" : “황상규", “gender" : “남자"}
array
여러 개의 object를 대괄호로 묶음
{
}
"employees" : [
{"name" : “황상규", "gender" : “남자"},
{"name" : “싸이", "gender" : “남자"},
{"name" : “김태희", "gender" : “여자"}
]
3. JSON 사용 예제
(1) 소스
<html>
<body>
이름 : <span id="name"></span><br/>
나이 : <span id="age"></span><br/>
주소 : <span id=“address"></span><br/>
전화번호 : <span id="phone"></span><br/>
</body>
<script type="text/javascript">
var person= {
"name":"황상규",
“address":"경기도 광명시 하안주공아파트 123동 456호",
"age":18,
"phone":"070-1234-5678"
};
document.getElementById("name").innerHTML = person.name
document.getElementById("age").innerHTML = person.age
document.getElementById(“address").innerHTML = person.address
document.getElementById("phone").innerHTML = person.phone
</script>
</html>
(2) 화면 출력
4. JSON과 XML의 포맷
(1) JSON 포맷
1: {
2: "book": {
3:
"type": "textbook",
4:
"pages": "256",
5:
"title": "Programming Pearls 2nd Edition",
6:
"description": "The first edition of Programming",
7:
"rating": "4.5",
8:
"coverType": "paperback",
9:
"genre": "Computer Science",
10:
"author": "Jon Bentley",
11:
"publisher": "Addison-Wesley Professional",
12:
"copyright": "1999"
13:
}
14: }
(2) XML 포맷
1: <book>
2:
<type>textbook</type>
3:
<pages>256</pages>
4:
<title>Programming Pearls 2nd Edition</title>
5:
<description>The first edition of Programming</description>
6:
<rating>4.5</rating>
7:
<coverType>paperback</coverType>
8:
<genre>Computer Science</genre>
9:
<author>Jon Bentley</author>
10:
<publisher>Addison-Wesley Professional</publisher>
11:
<copyright>1999</copyright>
12: </book>
5. JSON과 XML의 장단점
구분
XML
장점
. 작성하기가 간편하다(tag구조)
. XML 사람이 읽기가 쉽다. (즉 각 장보들이 의미하는
바를 한눈에 보기가 좋다.
. DTD 등 XML자체의 기능을 확장할 여지가 많이 있다.
. 파싱 : DOM 또는 SAX
JSON
. 내용이 함축적으로 최소한의 정보만을 가지고있다.
. 그렇기 때문에 XML대비 용량이 획기적으로 줄어들고
속도는 그만큼 빨라지게 된다.
. 객체구조와 {} 배열구조의 [] 적절한 만남으로 아주 효
율적인 데이터 구성이 가능하다.
. 파싱이 매우 간편하고, 때로는 일반적인 변수처럼 사
용도 가능하다. 즉, 사용하기 쉽다.
단점
. 하나의 데이타를 정의하기 위한 부수적인 정의가 너무
많이 필요하다(치명적 단점)
. 배열형식이나 반복구조의 경우 불필요한 데이터가 계
속 해서 나타난다.
. 결국 이로 인해 파싱이 힘들어지고 속도는 느려진다.
. 내용이 함축적이다 보니 내용의 의미파악은 힘들수 있
다.
. 아무래도 적은 규격의 데이터 전송에 적합한 방식이기
떄문에 XML보다는 빠르지만, 대용량급의 데이터 송수
신엔 부적합 모습도 있다.
. JSONP : URL을 통해서 Get 방식 (약 2KB 용량 제한)
6. Java에서 JSON 생성과 파싱
(1) 라이브러리
- Json-lib (http://json-lib.sourceforge.net/)
- org.json.simple(http://www.json.org/java/simple.txt, 다운로드: http://www.JSON.org/java/json_simple.zip )
(2) Json-lib에서 샘플
// JSON 생성
Map jsonMap = new HashMap();
jsonMap.put(“name" , “황상규");
JSONObject jo = new JSONObject();
jo.put(“gender", “남자");
jo.put(“person", jsonMap);
// JSON 파싱
jo.toString();
jo.get(“gender");
// {"gender":“남자", “person“:{“name":“황상규“}}
// “남자”
{
"gender":“남자",
“person":
{
“name":“황상규“
}
}
7. BPM 시스템 구축 프로젝트에서 JSON 데이터 형식의 활용
※ 업무시스템에서 발생된 BPM 연계처리 데이터를 JSON 포맷으로 변환
사용자
(1) 업무처리
JSON 변환
업무시스템(서버)
(2) 업무처리 데이터 저장
업무시스템(DB)
Fetch / Parse
Queue
Table
BPM 서버
(3) 프로세스 처리
정보 저장
BPM(DB)