Browse Source

feature:json序列化统一处理

feature-1.1
Penny 3 years ago
parent
commit
0bffdadead
  1. 4
      bnyer-auth/src/main/java/com/bnyer/auth/config/JsonConfig.java
  2. 2
      bnyer-auth/src/main/java/com/bnyer/auth/serializer/LongToStringSerializer.java
  3. 36
      bnyer-gateway/src/main/java/com/bnyer/gateway/config/JsonConfig.java
  4. 24
      bnyer-gateway/src/main/java/com/bnyer/gateway/serializer/LongToStringSerializer.java
  5. 36
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/config/JsonConfig.java
  6. 24
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/serializer/LongToStringSerializer.java
  7. 36
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/config/JsonConfig.java
  8. 24
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/serializer/LongToStringSerializer.java

4
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/config/JsonConfig.java → bnyer-auth/src/main/java/com/bnyer/auth/config/JsonConfig.java

@ -1,6 +1,6 @@
package com.bnyer.common.core.config;
package com.bnyer.auth.config;
import com.bnyer.common.core.serializer.LongToStringSerializer;
import com.bnyer.auth.serializer.LongToStringSerializer;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;

2
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/serializer/LongToStringSerializer.java → bnyer-auth/src/main/java/com/bnyer/auth/serializer/LongToStringSerializer.java

@ -1,4 +1,4 @@
package com.bnyer.common.core.serializer;
package com.bnyer.auth.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;

36
bnyer-gateway/src/main/java/com/bnyer/gateway/config/JsonConfig.java

@ -0,0 +1,36 @@
package com.bnyer.gateway.config;
import com.bnyer.gateway.serializer.LongToStringSerializer;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
/**
* 解决雪花Id长度超过16位前端传入精度丢失的问题
*/
@Configuration
public class JsonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
{
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// 全局配置序列化返回 JSON 处理
SimpleModule simpleModule = new SimpleModule();
//JSON Long ==> String
//自定义字符串转化规则ToStringSerializer换成自定义的LongToStringSerializer
simpleModule.addSerializer(Long.class, LongToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, LongToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
//参数在bean中没有的情况处理
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper;
}
}

24
bnyer-gateway/src/main/java/com/bnyer/gateway/serializer/LongToStringSerializer.java

@ -0,0 +1,24 @@
package com.bnyer.gateway.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
public class LongToStringSerializer extends JsonSerializer<Long> {
public static final LongToStringSerializer instance = new LongToStringSerializer();
@Override
public void serialize(Long id, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if(id != null){
//长度小于某个值的,还是保持long类型
if(id < 10000000000000000L){
jsonGenerator.writeNumber(id);
}else {
//长度超过某个值的,转化为字符串
jsonGenerator.writeString(id.toString());
}
}
}
}

36
bnyer-services/bnyer-order/src/main/java/com/bnyer/order/config/JsonConfig.java

@ -0,0 +1,36 @@
package com.bnyer.order.config;
import com.bnyer.order.serializer.LongToStringSerializer;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
/**
* 解决雪花Id长度超过16位前端传入精度丢失的问题
*/
@Configuration
public class JsonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
{
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// 全局配置序列化返回 JSON 处理
SimpleModule simpleModule = new SimpleModule();
//JSON Long ==> String
//自定义字符串转化规则ToStringSerializer换成自定义的LongToStringSerializer
simpleModule.addSerializer(Long.class, LongToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, LongToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
//参数在bean中没有的情况处理
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper;
}
}

24
bnyer-services/bnyer-order/src/main/java/com/bnyer/order/serializer/LongToStringSerializer.java

@ -0,0 +1,24 @@
package com.bnyer.order.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
public class LongToStringSerializer extends JsonSerializer<Long> {
public static final LongToStringSerializer instance = new LongToStringSerializer();
@Override
public void serialize(Long id, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if(id != null){
//长度小于某个值的,还是保持long类型
if(id < 10000000000000000L){
jsonGenerator.writeNumber(id);
}else {
//长度超过某个值的,转化为字符串
jsonGenerator.writeString(id.toString());
}
}
}
}

36
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/config/JsonConfig.java

@ -0,0 +1,36 @@
package com.bnyer.pay.config;
import com.bnyer.pay.serializer.LongToStringSerializer;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
/**
* 解决雪花Id长度超过16位前端传入精度丢失的问题
*/
@Configuration
public class JsonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
{
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// 全局配置序列化返回 JSON 处理
SimpleModule simpleModule = new SimpleModule();
//JSON Long ==> String
//自定义字符串转化规则ToStringSerializer换成自定义的LongToStringSerializer
simpleModule.addSerializer(Long.class, LongToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, LongToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
//参数在bean中没有的情况处理
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper;
}
}

24
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/serializer/LongToStringSerializer.java

@ -0,0 +1,24 @@
package com.bnyer.pay.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
public class LongToStringSerializer extends JsonSerializer<Long> {
public static final LongToStringSerializer instance = new LongToStringSerializer();
@Override
public void serialize(Long id, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if(id != null){
//长度小于某个值的,还是保持long类型
if(id < 10000000000000000L){
jsonGenerator.writeNumber(id);
}else {
//长度超过某个值的,转化为字符串
jsonGenerator.writeString(id.toString());
}
}
}
}
Loading…
Cancel
Save