반응형
참조한 문서: ModelMapper
http://modelmapper.org/user-manual/jackson-integration/
필요한 repository
org.modelmapper modelmapper 1.1.0 org.modelmapper.extensions modelmapper-jackson 1.1.0 com.googlecode.json-simple json-simple 1.1
JAVA 쪽 코드
import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import org.modelmapper.ModelMapper; import org.modelmapper.convention.NameTokenizers; import org.modelmapper.jackson.JsonNodeValueReader; // 여기서는 정적 메서드로 생성. public class JsonUtil(){ // string 형의 JSON 값을 파싱 static JSONParser jsonParser; static ModelMapper modelMapper; /** 초기화 */ static { modelMapper = new ModelMapper(); modelMapper.getConfiguration().addValueReader(new JsonNodeValueReader()); modelMapper.getConfiguration().setSourceNameTokenizer(NameTokenizers.UNDERSCORE); jsonParser = new JSONParser(); } /** * json 형태의 텍스트를 클래스로 변환하여 리턴 * @param jsonStr * json 포멧으로 되어있는 string(문자) * @param obj * JSON 값을 매핑할 클래스 * * 참조: * - Jackson Integration (ModelMapper) * http://modelmapper.org/user-manual/jackson-integration/ * - 문서상으로는 jsonNode 를 처리하도록 했는데, JSON의 형태가 2dept 이상 넘어가면 다음의 에러 생성 * : at org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:374) * 그래서 JsonNode 대신에 JSONObject 로 사용함. */ public static Object convertJsonStrToClass(String jsonStr , Class obj){ try { JSONObject jsonObj = (JSONObject) jsonParser.parse(jsonStr); return modelMapper.map(jsonObj, obj); } catch (ParseException e) { e.printStackTrace(); return null; } } }
테스트 코드
// 반드시 따옴표로 해야하고 ' << 작은 따옴표를 하는경우 에러가 발생 String testJson = "{\"test\":\"test123\",\"code\":\"CD001\"}"; // HashMap 형태로 받기로 수정 HashMap test = (HashMap) JsonUtil.convertJsonStrToClass(testJson, HashMap.class); System.out.println(test); => 결과값: {code=CD001, test=test123}
반응형
'공부 > 프로그래밍' 카테고리의 다른 글
[jquery] 별점주기 기능 구현 (4) | 2018.03.04 |
---|---|
[android] 레이아웃 미리보기에서 한글깨짐 현상 수정 (0) | 2018.03.04 |
[SPRING] 멀티서버 스케쥴 처리를 위한 LOCK API: ShedLock (0) | 2017.11.30 |
log4j 에서 특정 쿼리로그 안나오게 하기. (0) | 2017.11.15 |
angularjs를 쓰고있는데 네이버 스마트 에디터 2.0 가 필요할 때 (1) | 2017.10.24 |
댓글