diff --git a/ureport2-console/src/main/java/com/bstek/ureport/console/JsonMapper.java b/ureport2-console/src/main/java/com/bstek/ureport/console/JsonMapper.java new file mode 100644 index 0000000..2fe8e0f --- /dev/null +++ b/ureport2-console/src/main/java/com/bstek/ureport/console/JsonMapper.java @@ -0,0 +1,35 @@ +package com.bstek.ureport.console; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import org.codehaus.jackson.map.SerializationConfig; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.TimeZone; + +/** + * @author nelson + * @version 1.0 + * @desc 扩展json格式化,支持java8 LocalDateTime + * @company 北京中经网软件有限公司 + * @date 2021/7/12 18:08 + */ +public class JsonMapper extends ObjectMapper { + public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + + public JsonMapper() { + this.setSerializationInclusion(JsonInclude.Include.NON_NULL); + this.setDateFormat(new SimpleDateFormat(DEFAULT_DATE_TIME_FORMAT)); + this.setTimeZone(TimeZone.getTimeZone("GMT+8")); + JavaTimeModule javaTimeModule = new JavaTimeModule(); + javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))); + javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))); + + this.registerModule(javaTimeModule); + } +} diff --git a/ureport2-console/src/main/java/com/bstek/ureport/console/WriteJsonServletAction.java b/ureport2-console/src/main/java/com/bstek/ureport/console/WriteJsonServletAction.java index 9429ce3..f40e50b 100644 --- a/ureport2-console/src/main/java/com/bstek/ureport/console/WriteJsonServletAction.java +++ b/ureport2-console/src/main/java/com/bstek/ureport/console/WriteJsonServletAction.java @@ -15,6 +15,10 @@ ******************************************************************************/ package com.bstek.ureport.console; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.map.SerializationConfig; +import org.codehaus.jackson.map.annotate.JsonSerialize; + import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; @@ -22,9 +26,7 @@ import java.text.SimpleDateFormat; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.map.SerializationConfig; -import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion; + /** @@ -35,10 +37,7 @@ public abstract class WriteJsonServletAction extends BaseServletAction{ protected void writeObjectToJson(HttpServletResponse resp,Object obj) throws ServletException, IOException{ resp.setContentType("text/json"); resp.setCharacterEncoding("UTF-8"); - ObjectMapper mapper=new ObjectMapper(); - mapper.setSerializationInclusion(Inclusion.NON_NULL); - mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS,false); - mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); + JsonMapper mapper=new JsonMapper(); OutputStream out = resp.getOutputStream(); try { mapper.writeValue(out, obj); diff --git a/ureport2-core/pom.xml b/ureport2-core/pom.xml index a8f503e..ebbf63f 100644 --- a/ureport2-core/pom.xml +++ b/ureport2-core/pom.xml @@ -71,7 +71,12 @@ org.codehaus.jackson jackson-mapper-asl - 1.9.11 + 1.9.13 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.12.4 commons-io