Skip to content

Commit

Permalink
Merge pull request #102 from hocgin/v1.0.39
Browse files Browse the repository at this point in the history
[新增功能](v1.0.39): 处理 long 类型在前端可能出现问题
  • Loading branch information
hocgin authored May 8, 2022
2 parents 43c487c + 00b6b63 commit f89c7a3
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package in.hocg.boot.web.autoconfiguration.jackson;

import in.hocg.boot.web.autoconfiguration.jackson.localdatetime.LocalDateTimeDeserializer;
import in.hocg.boot.web.autoconfiguration.jackson.localdatetime.LocalDateTimeSerializer;
import in.hocg.boot.web.autoconfiguration.jackson.xlong.LongDeserializer;
import in.hocg.boot.web.autoconfiguration.jackson.xlong.LongSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.LocalDateTime;

/**
* Created by hocgin on 2020/9/4
* email: hocgin@gmail.com
Expand All @@ -16,11 +15,13 @@
@Configuration
public class SerializerConfiguration {

// @Bean
@Bean
public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
return builder -> {
builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer());
builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer());
// builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer());
// builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer());
builder.serializerByType(Long.class, new LongSerializer());
builder.deserializerByType(Long.class, new LongDeserializer());
};
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package in.hocg.boot.web.autoconfiguration.jackson.xlong;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Objects;

/**
* Created by hocgin on 2019/5/22.
* email: hocgin@gmail.com
*
* @author hocgin
*/
public class LongDeserializer extends JsonDeserializer<Long> {
@Override
public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
if (Objects.nonNull(p)) {
return Convert.toLong(p.getText());
}
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package in.hocg.boot.web.autoconfiguration.jackson.xlong;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;

/**
* Created by hocgin on 2019/5/22.
* email: hocgin@gmail.com
*
* @author hocgin
*/
public class LongSerializer extends JsonSerializer<Long> {
@Override
public void serialize(Long val, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (ObjectUtil.isNull(val)) {
jsonGenerator.writeNull();
} else {
jsonGenerator.writeString(val.toString());
}
}
}

0 comments on commit f89c7a3

Please sign in to comment.