java

[java] Json 형태로 결과값 확인하기

JH..Y 2021. 10. 27. 22:56
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