All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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