
com.sghd.common.utils.converter.TianheMappingJacksonHttpMessageConverter Maven / Gradle / Ivy
The newest version!
package com.sghd.common.utils.converter;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.sghd.common.utils.json.MappingJacksonHttpMessageConverter;
/**
* Long值 Java通信js 转换器
*/
public class TianheMappingJacksonHttpMessageConverter extends MappingJacksonHttpMessageConverter {
/** js as 支持的最大整数值 */
private static final long LONG_JS_MAX_VLAUE = 1L << 53;
public TianheMappingJacksonHttpMessageConverter() {
ObjectMapper mapper = new ObjectMapper();
SimpleModule testModule = new SimpleModule("MyModule", new Version(1, 0, 0, null,null,null)).addDeserializer(long.class, new LongDeserializer()).addSerializer(long.class, new LongJsonSerializer());
testModule.addSerializer(Long.class, new LongJsonSerializer());
testModule.addDeserializer(Long.class, new LongDeserializer());
mapper.registerModule(testModule);
super.setObjectMapper(mapper);
}
class LongDeserializer extends JsonDeserializer {
@Override
public Long deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
// System.out.println("test >> long \t" + jp.getText());
return Long.valueOf(jp.getText());
}
}
class LongJsonSerializer extends JsonSerializer {
@Override
public void serialize(Long value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
// System.out.println("long >> text \t" + value);
if (value >= LONG_JS_MAX_VLAUE) {
jgen.writeString(value.toString());
} else {
jgen.writeNumber(value);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy