JSON(제이슨, JavaScript Object Notation)은, 인터넷에서 자료를 주고받을 때 그 자료를 표현하는 방법이다. 

XML 보다 데이터 전송량이 적어서 효율적이다. http://ko.wikipedia.org/wiki/JSON


GSON(지슨)은 Java 객체를 JSON 표현식으로 변환할 수 있게 하는 Java 라이브러리 이다. JSON 표현식 형태의 문자열을 Java 객체로 변환도 가능하다.


네트워크 통신시에 객체를 전송/수신할때 Serialization/Deserialization (직렬화/역직렬화)를 해야한다. 그러기 위해서는 전송하는 객체에 Serialization//Deserialization을 구현해야한다. 

이런걸 하기 귀찮아서 GSON 라이브러리를 사용한다.


1. 서버로 전송시 (Serialization 대신 gson.toJson 사용)

Gson gson = new Gson();
MyClass obj = new MyClass();
obj.setParam(1,"홍길동", "010-7777-8888", 23, "M");
String json = gson.toJson(obj);


2. 서버에서 수신시 (Deserialization 대신 gson.fromJson 사용)

 
Gson gson = new Gson();
String result = "서버에서 온 데이터....";
MyClass obj = new MyClass();
obj = gson.fromJson(result, MyClass.class);


3. 단순한 자료형도 변환가능하다.

  
// Serialization
Gson gson = new Gson();
gson.toJson(1);
gson.toJson("qwer");
gson.toJson(new Long(10));
int[] values = {1,2,3,4};
gson.toJson(values);

// Deserialization
int one = gson.fromJson("1", int.class)
Integer one  = gson.fromJson("1", Integer.class)
Boolean bb = gson.fromJson("true", Boolean.class);
String str = gson.fromJson("abc", String.class);
String body = ...;
String[] strings = gson.fromJson(body, String[].class);


4. 객체의 List 일경우.


 
// MyObjectVO.java
public class MyObjectVO {

	private String item;	
	private String type;	
	private String score;	
	
	public String getItem() {
		return item;
	}
	public void setItem(String item) {
		this.item = item;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getScore() {
		return score;
	}
	public void setScore(String score) {
		this.score = score;
	}

}

// MyObjectVOList.java

public class MyObjectVOList {

private List<MyObjectVo> list;


public List<MyObjectVo> getList() {

return list;

}


public void setList(List<MyObjectVo> list) {

this.list = list;

}

}



// 서버로 전송시(또는 서버에서 전송시)

Gson gson = new Gson();

MyObjectVoList voList = new MyObjectVoList();

List<MyObjectVo> list = new ArrayList<MyObjectVo>();

...

MyObjectVo myobj = new MyObjectVo();

myobj.setItem("apple");

myobj.setType("red");

myobj.setScore("99")

list.add(myobj);

...

voList.setList(list);


gson.toJson(voList);



// 서버에서 수신시

 
Gson gson = new Gson();
MyObjectVoList voList = gson.fromJson(result, MyObjectVoList.class);
String item = voList.getList.get(0).getItem.toString();





참고 : http://emflant.tistory.com/47

예제 : https://sites.google.com/site/gson/gson-user-guide


GSON 다운로드 : https://code.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.4-release.zip




+ Recent posts