工具类
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.text.SimpleDateFormat;
@Slf4j
public class JacksonUtil {
private static final ObjectMapper objectMapper = new ObjectMapper();
static {
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"))
.setFilterProvider(new SimpleFilterProvider().setFailOnUnknownId(false))
.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule())
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);;
}
private JacksonUtil() {
}
/**
* toJsonString
*
* @param object
* @return
*/
public static String toJsonString(Object object) {
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
log.error("object [{}] to json string failed:{}", object.toString(), e.getMessage(), e);
return null;
}
}
/**
* json格式字符串转换成对象
*
* @param json
* @param clazz
* @param <T>
* @return
*/
public static <T> T toObject(String json, Class<T> clazz) {
try {
return objectMapper.readValue(json, clazz);
} catch (IOException e) {
log.error("json [{}] to object {} failed:{}", json, clazz.toString(), e.getMessage(), e);
return null;
}
}
public static void main(String[] args) {
Order order = new Order(1L, OrderType.FAIL, "测试");
String jsonStr = JacksonUtil.toJsonString(order);
log.info("jsonStr: {}", jsonStr);
Order orderBean = JacksonUtil.toObject("{\"id\":1,\"orderType\":\"FAIL\",\"name\":\"测试\"}", Order.class);
log.info("bean: {}", orderBean);
}
}
实体类
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class Order {
private Long id;
private OrderType orderType;
private String name;
public Order(Long id, OrderType orderType, String name) {
this.id = id;
this.orderType = orderType;
this.name = name;
}
}
public enum OrderType {
DEFAULT,
INIT,
PENDING,
SUCCESS,
FAIL,
CANCEL
}