sitelink1 | https://coffee-mark.tumblr.com/post/6109...B3%BC-gson |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
sitelink6 |
JSON과 GSON
JSON이란?
JSON은 무엇인가?
경량의 데이타 교환 포맷이다.
> XML과 비교한다.
간단한 포맷
> 사람들을 위해 읽고 쓰기가 쉽다.
> 기계들을 위해 분석과 생성이 쉽다.
JSON은 텍스트 포맷이다.
> 언어에 독립적으로 프로그래밍된다.
> 프로그래머들에게 잘 알려진 C,C++,C#,Java,xxJavaScript,Perl,Pyton을 포함하는 C와 유사한 언어로 모여서 사용된다.
XML을 넘어 왜 JSON인가?
on-the-wire(선을 통한) 데이타 포맷인 XML보다 가볍고 빠르다.
JSON 오브젝트는 XML 데이타가 타입이 없는데 비해 타입을 가진다.
> JSON types : string, number, array, boolean
> XML 데이타는 모두 String 이다.
xxJavaScript 코드를 위해 Native 코드포맷이다.
> Data는 사용자의 xxJavaScript코드 안에서 JSON 객체에 접근이 쉽다.
XML 데이타가 해석과 장황한 DOM API를 통해 변수에 접근하는 것을 필요로 하는데 비해
> 회수한 값들은 사용자의 자바스크립트 안의 객체속성에서 읽기가 쉽다.
JSON은 어디에서 사용되는가?
구성정보를 나타낸다.
통신 프로토콜을 실행한다.
GSON이란?
Gson은 JSON 파일을 자바 오브젝트로 변환할 수 있게 해주는 구글이 만든 자바 라이브러리이다. 자바스크립트로 처리하는 라이브러리도 많지만 자바에 더 능숙하다면 GSON을 추천한다.
자바 오브젝트를 JSON으로 변경할 수 있는 오픈소스가 많이 있지만 대부분은 JAVA Annotation을 사용해야 하는 불편함이 있다. 또한 자바 Generics도 지원하지 않는 경우도 많다.
Gson의 특징
1. JSON 파일을 쉽게 읽고 만들 수있는 toJson(), fromJson() 메소드를 API로 제공한다.
2. JAVA Generics를 지원한다.
다운은 아래 위치에서 받을 수 있다.
http://code.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.2-release.zip
구글의 gson 라이브러리를 사용하여 객체를 json으로 마샬링(언마샬링)하기
google-gson은 자바 객체를 JSON으로 convert하는 자바 라이브러리이다.
웹페이지 : http://code.google.com/p/google-gson/
웹페이지에서 다운로드후 압축을 풀고 gson-2.x.x.jar을 클래스패스에 추가
ex) [출처]https://sites.google.com/site/gson/gson-user-guide
Primitives Examples
(Serialization)
Gson gson = new Gson();
gson.toJson(1); ==> prints 1
gson.toJson(“abcd”); ==> prints “abcd”
gson.toJson(new Long(10)); ==> prints 10
int[] values = { 1 };
gson.toJson(values); ==> prints [1]
(Deserialization)
int one = gson.fromJson(“1”, int.class);
Integer one = gson.fromJson(“1”, Integer.class);
Long one = gson.fromJson(“1”, Long.class);
Boolean false = gson.fromJson(“false”, Boolean.class);
String str = gson.fromJson(“"abc"”, String.class);
String anotherStr = gson.fromJson(“["abc"]”, String.class);
Object Examples
class BagOfPrimitives {
private int value1 = 1;
private String value2 = “abc”;
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
(Serialization)
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
==> json is {“value1”:1,“value2”:“abc”}
Note that you can not serialize objects with circular references since that will result in infinite recursion.
(Deserialization)
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
==> obj2 is just like obj