Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 엽서
- 위경도계
- Query
- IntelliJ
- mybatis polygon
- 큐브리드
- 쿼리
- mysql polygon
- json parser
- 캘리그라피
- mybatis polygon mapper
- 좌표계변환
- QGIS
- 여행
- join
- 파이어폭스41
- mysql gis
- 단축키
- JPA
- 좌표변환
- 자바
- 하이버네이트
- shortcuts
- cubrid
- spring
- Hibernate
- 사진
- Java
- mybatis
- JSON 변환
Archives
- Today
- Total
쏘댕
[Java] 자주쓰는 Json <-> Object 파싱 JsonUtil 만들기 본문
json 파싱할 일은 수두룩 빽빽인데, 매번 귀찮으니 util로 만들어놓으면 편하다.
몇 번 만들면서 조금씩 변하기는 했는데, 어쨌든 toObject는 필수템!
이렇게 쓰니 다른 프로젝트 개발하다 json 유틸없으면
파싱하는 법이 잘 생각 안나서 찾아가면서 만들어야 하는게 함정... ㅋㅋㅋㅋㅋ
package com.ssodang.common.util;
import com.ssodang.exception.JsonUtilException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.NoArgsConstructor;
import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import java.util.Map;
@NoArgsConstructor
public class JsonUtil {
private static final ObjectMapper defaultObjectMapper = ObjectMapperFactory.newDefaultMapper();
private static volatile ObjectMapper objectMapper = null;
public static ObjectMapper mapper() {
return objectMapper == null ? defaultObjectMapper : objectMapper;
}
public static ObjectWriter writer() {
return mapper().writer().withDefaultPrettyPrinter();
}
public static JsonNode parse(String var0) {
try {
return mapper().readTree(var0);
} catch (Throwable var2) {
throw new RuntimeException(var2);
}
}
public static JsonNode parse(Map map) {
StringWriter stringify = new StringWriter();
ObjectNode objectNode = null;
try {
mapper().writeValue(stringify, map);
objectNode = (ObjectNode) mapper().readTree(stringify.toString());
} catch (IOException e) {
e.printStackTrace();
}
return objectNode;
}
public static ObjectNode newObject() {
return mapper().createObjectNode();
}
public static ArrayNode newArray() {
return mapper().createArrayNode();
}
public static <T> T toObject(String jsonModel, Class<T> targetClass) throws IOException, JsonUtilException {
try {
return mapper().readValue(jsonModel, mapper().getTypeFactory().constructType(targetClass));
} catch (RuntimeException e) {
throw new JsonUtilException();
}
}
public static <T> String toJsonString(T model) throws IOException, JsonUtilException {
ObjectWriter ow = writer().withDefaultPrettyPrinter();
try {
return ow.writeValueAsString(model);
} catch (RuntimeException e) {
throw new JsonUtilException();
}
}
public static <T> List<T> jsonArrayToList(String jsonArr, Class<T> targetClass) throws IOException, JsonUtilException {
try {
return mapper().readValue(jsonArr, mapper().getTypeFactory().constructCollectionType(List.class, targetClass));
} catch (RuntimeException e) {
throw new JsonUtilException();
}
}
public static <T> String listToJsonArray(List<T> list) throws IOException, JsonUtilException {
try {
return writer().writeValueAsString(list);
} catch (RuntimeException e) {
throw new JsonUtilException();
}
}
}
자바 기본 라이브러리에도 더 깔끔한게 있을 것 같은데... 찾아봐야지...
코드블럭 왜 색깔 예쁘게 안보이지? 흠
끝.
'공부 > Java' 카테고리의 다른 글
WebMvcConfigurerAdapter 변경 (0) | 2019.07.24 |
---|---|
[하이버네이트] 4버전 이상에서의 HibernateUtil.java (0) | 2015.11.05 |
Hibernate - 큐브리드 2 JOIN (0) | 2015.10.05 |
[Hibernate] 하이버네이트 - 큐브리드 (0) | 2015.09.01 |
개인정보 마스킹처리 (휴대폰번호, 이메일) (0) | 2015.07.20 |
Comments