강좌 & 팁
저번 시간에는 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; } }
[실행결과]
소스는 저번것과 비슷합니다.
정말 어렵지 않아요. 설명 할것도 별로 없습니다.
라이브러리만 찾아 넣어서 실행만 하면 됩니다.
그것도 귀찮으시다면 첨부파일을 다운로드후 압축을 풀고 이클립스에서 import하신후 실행해 보세요. ^^
감사합니다.