feat(response): 更新 response 序列化方案

This commit is contained in:
han0
2023-11-16 11:03:59 +08:00
parent 6682b0313e
commit 7265890acd
3 changed files with 64 additions and 9 deletions

View File

@@ -1,6 +1,8 @@
package mjkf.xinke.main.common.http;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.jgy.xxs.core.http.NcMeta;
import com.jgy.xxs.core.http.NcPagination;
import com.jgy.xxs.core.http.resp.HttpResponse;
@@ -9,6 +11,7 @@ import lombok.Getter;
@Getter
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class FuHttpResponse<T> extends NcHttpResponse<T> {
@JsonIgnore
private NcMeta meta;

View File

@@ -0,0 +1,58 @@
package mjkf.xinke.main.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
* NcHttpResponseConfig
*
* @author han0
* @date 2019-11-21
*/
@Configuration
public class NcHttpResponseConfig {
/**
* 替换对Response的转换mapper,此处可以自定义返回统一的json格式转换器
* @return
*/
@Bean
public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
// 设置日期格式
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
// objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
objectMapper.registerModule(javaTimeModule);
mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
// 设置中文编码格式
var list = List.of(MediaType.APPLICATION_JSON_UTF8);
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
return mappingJackson2HttpMessageConverter;
}
}

View File

@@ -8,9 +8,8 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
@@ -30,6 +29,7 @@ import mjkf.xinke.main.model.vo.MaterialEditRequest;
*/
@Getter
@Setter
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@FieldNameConstants
@TableName("MATERIAL")
@ApiModel(value = "Material对象", description = "材料")
@@ -45,8 +45,6 @@ public class Material extends Model<Material> {
@TableField("UPDATE_USER_NAME")
private String updateUserName;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("最后更新时间")
@TableField("UPDATE_TIME")
private LocalDateTime updateTime;
@@ -59,8 +57,6 @@ public class Material extends Model<Material> {
@TableField("CREATE_USER_NAME")
private String createUserName;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
@TableField("CREATE_TIME")
private LocalDateTime createTime;
@@ -73,8 +69,6 @@ public class Material extends Model<Material> {
@TableField("DELETE_USER_NAME")
private String deleteUserName;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("删除时间")
@TableField("DELETE_TIME")
private LocalDateTime deleteTime;