728x90
JsonUtil 선언
package com.juu.prac.common;
import java.io.IOException;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
public class JsonUtil {
static ObjectMapper mapper = new ObjectMapper();
public static <T> String objectToJsonAsString(T t) throws JsonProcessingException {
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.setSerializationInclusion(Include.NON_NULL);
return mapper.writeValueAsString(t);
}
public static <T> T jsonToObject(final String json, Class<T> tclass) throws IOException {
return mapper.readValue(json, tclass);
}
public static Map<String, Object> jsonToMap(String jsonStr) throws JsonParseException, JsonMappingException, IOException {
return mapper.readValue(jsonStr, new TypeReference<Map<String, Object>>() {});
}
public static Object jsonFilter(final String jsonFilter, final String[] filterList, Object ins, Class<?> cls) throws IOException {
SimpleFilterProvider filters = new SimpleFilterProvider().addFilter(jsonFilter, SimpleBeanPropertyFilter.filterOutAllExcept(filterList));
filters.setFailOnUnknownId(false);
ObjectWriter writer = mapper.writer(filters);
return mapper.readValue(writer.writeValueAsString(ins), cls);
}
}
해당 클래스 상속시켜서 .toJsonString 사용
package com.juu.prac.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.juu.prac.common.JsonUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Data
@JsonInclude(value = Include.NON_NULL)
public class CommonResponse {
// toString 자체를 json형태로 출력하게
/*
@Override
public String toString() {
return toJsonString();
}
*/
public String toJsonString() {
String r = null;
try {
r = JsonUtil.objectToJsonAsString(this);
} catch (JsonProcessingException e) {
log.error(e.getMessage(), e);
}
return r;
}
}
728x90
'java' 카테고리의 다른 글
[java] 문자열을 DateTime 객체로 변환 (0) | 2021.10.27 |
---|---|
[java] 오버로딩 vs 오버라이딩 차이점 (0) | 2021.10.27 |
[java] 리스트 배열로 변환 (0) | 2021.10.27 |
[java] 어노테이션 정리 (0) | 2021.10.26 |
[java] 클래스명, 필드명 가져오기 (0) | 2021.10.25 |