저번 시간에는 xml을 오브젝트로, 오브젝트를 xml로 변환 하는 방법에 대해 알아 봤습니다.

[Java]JAXBContext로 xml을 오브젝트로, 오브젝트를 xml로 변환하기 참조 : http://forum.falinux.com/zbxe/?document_srl=572226

 

그럼, 오브젝트를 JSON방식으로 변환 하는 방법은 없을까? 하고 또 찾아 봤습니다. 있더라구요.^^;

그래서 올려봅니다.

 

사전 준비 작업이 필요합니다.

JSON라이브러리와 JSON라이브러리에서 필요로 하는 라이브러리 들을 먼저 다운로드후 빌드 패스에 추가 해놓습니다.

 

 필요한 라이브러리

  -  json-lib (json-lib-2.4-jdk15.jar)
  다운로드 : http://json-lib.sourceforge.net/

 


json-lib에서 필요로 하는 라이브러리
  다운로드 : http://commons.apache.org/
  1.commons-lang-2.6.jar
  2.commons-beanutils-1.8.3.jar
  3.commons-collections-3.2.jar
  4.commons-logging-1.1.1.jar

  다운로드 : http://sourceforge.net/projects/ezmorph/files/ezmorph/
  1. ezmorph-1.0.6.jar

 

[샘플소스]소스는 메인만 있습니다. 그외 부수적인 것은 첨부 파일을 참조하세요.

 

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
 
 
 
public class ObjectToJson {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		// AddressBook 오브젝트 생성
		AddressBook addr = createAddressBook();
 
		// 오브젝트 -> JSON
		JSONObject jsonObj = JSONObject.fromObject(JSONSerializer.toJSON(addr));
 
		// 콘솔 출력
		System.out.println(" all : " + jsonObj.toString());
		System.out.println();
 
		JSONArray user = (JSONArray) jsonObj.get("user");
		JSONObject address = (JSONObject) user.get(0);
		System.out.println("name    : " + address.get("name"));
		System.out.println("address : " + address.get("address"));
		System.out.println("phone   : " + address.get("phone"));
 
		System.out.println("--------- email info --------");
 
		JSONObject emails = (JSONObject) address.get("emails");
		JSONArray email = (JSONArray) emails.get("email");
 
		for (int i = 0; i < email.size(); i++) {
			JSONObject temp = (JSONObject) email.get(i);
			System.out.printf("id     :  %s     emailAddr  :  %s  \n",temp.get("id"), temp.get("emailAddr"));
		}
 
	}
 
	private static AddressBook createAddressBook() {
		// TODO Auto-generated method stub
		AddressBook adressBook = new AddressBook();
 
		// 유저
		User user = new User();
		user.setName("Mr Kim");
		user.setPhone("12334344");
		user.setAddress("서욽특별시 서초구 양재동");
 
		// 여러메일 저장
		Emails emails = new Emails();
		// 메일1
		Email email = new Email();
		email.setId("Naver");
		email.setEmailAddr("abc@naver.com");
		emails.getEmail().add(email);
 
		// 메일2
		email = new Email();
		email.setId("Nate");
		email.setEmailAddr("abc@nate.com");
		emails.getEmail().add(email);
 
		// 메일3
		email = new Email();
		email.setId("Daum");
		email.setEmailAddr("abc@hanmail.net");
		emails.getEmail().add(email);
 
		// 유저에 메일정보 설정
		user.setEmails(emails);
 
		// 어드레스북에 유저 정보 설정
		adressBook.getUser().add(user);
 
		return adressBook;
	}
 
}

 

[실행결과]

ObjectTojson.png

 

 

소스는 저번것과 비슷합니다.

정말 어렵지 않아요. 설명 할것도 별로 없습니다.

라이브러리만 찾아 넣어서 실행만 하면 됩니다.

그것도 귀찮으시다면 첨부파일을 다운로드후 압축을 풀고 이클립스에서 import하신후 실행해 보세요. ^^

 

감사합니다.