on
【Java-데이터】객체를 Json형식의 데이터로 변환하기
【Java-데이터】객체를 Json형식의 데이터로 변환하기
1. 설명
이 포스트에서 다룰 예제는 DTO, VO와 같은 데이터가 담기는 클래스의 객체를 Json형식의 데이터로 변환해주는 코드입니다.
제가 경험한 업무에서 데이터 객체를 Json으로 변환하는 데 필요한 경우는
아래와 같은 흐름의 프로그램을 만들어할 때 였습니다.
1) DB 또는 파일의 원본 데이터 -> 2) 데이터 클래스의 객체에 데이터 매핑 -> 3) JSON변환 -> 4) API에 HTTP 요청시JSON을 Request Body에 넣고 요청
2. 소스코드
- 메서드
public String makeJsonFromObj(Object obj) { if (obj == null) return null; String res = null; try { res = mapper.writeValueAsString(obj); } catch (JsonProcessingException e) { e.printStackTrace(); } return res; }
대용량 JSON데이터를 처리하는데 있어 유리한 jackson-databind를 사용해서 구현했습니다
Gradle 기준 아래의 의존성을 추가해 주셔야 예제코드가 동작합니다.
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.2'
- 메인
public class Data_01_JsonMake { public static void main(String[] args) { try { for (String str : args ) { System.out.println("Param : "+str); } List items = getItems(); JsonUtil ju = JsonUtil.getInstance(); String jsonContents = ju.makeJsonFromObj(items); System.out.println(jsonContents); makeJson(args[0], jsonContents); System.exit(0); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } private static void makeJson(String path, String ...strs) { FileUtil fu = new FileUtil(); List jsonFileContents = Arrays.asList(strs); fu.writePerLine(new File(path), jsonFileContents); } private static List getItems() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); List list = new ArrayList(); for (int i=1; i<=3; i++) { Item item = new Item(); item.setItemId(i); item.setItemName("testItem"+i); item.setItemPrice(Integer.parseInt(i+"000")); item.setSales(true); List itemImages = new ArrayList(); for (int z=1; z<=3; z++) { itemImages.add("testItem-img"+z+".png"); } item.setImages(itemImages); List itemStocks = new ArrayList(); for (int j=1; j<=3; j++) { StockHistory sh = new StockHistory(); sh.setStockHistoryNo(j); sh.setCount(j*2); sh.setReceivingDate(new Date()); itemStocks.add(sh); } item.setStockHistory(itemStocks); item.setJoinDate(format.format(new Date())); list.add(item); } return list; } }
3. 실행결과【Windows(이클립스) / Linux】
실행 결과 생성한 Json파일의 내용 ※ notepad의 JsonFormat을 사용
4. 전체코드
https://github.com/leeyoungseung/template-java
from http://koiking.tistory.com/36 by ccl(A) rewrite - 2021-09-17 01:27:33