LongJsonDeserializer deserializer = new LongJsonDeserializer();SimpleModule module = new SimpleModule("LongDeserializerModule", new Version(1, 0, 0, null, null, null));module.addDeserializer(Long.class, deserializer);ObjectMapper mapper = new ObjectMapper();mapper.registerModule(module);这是完整的演示应用程序。这适用于最新版本的Jackson,也可能适用于Jackson版本回到1.7。
import java.io.IOException;import org.prehaus.jackson.JsonParser;import org.prehaus.jackson.JsonProcessingException;import org.prehaus.jackson.Version;import org.prehaus.jackson.map.DeserializationContext;import org.prehaus.jackson.map.JsonDeserializer;import org.prehaus.jackson.map.ObjectMapper;import org.prehaus.jackson.map.module.SimpleModule;public class Foo{ public static void main(String[] args) throws Exception { TestBean bean = new TestBean(); bean.value = 42L; ObjectMapper mapper = new ObjectMapper(); String beanJson = mapper.writevalueAsString(bean); System.out.println(beanJson); // output: {"value":42} TestBean beanCopy1 = mapper.readValue(beanJson, TestBean.class); System.out.println(beanCopy1.value); // output: 42 SimpleModule module = new SimpleModule("LongDeserializerModule", new Version(1, 0, 0, null)); module.addDeserializer(Long.class, new LongJsonDeserializer()); mapper = new ObjectMapper(); mapper.registerModule(module); TestBean beanCopy2 = mapper.readValue(beanJson, TestBean.class); System.out.println(beanCopy2.value); // output: 126 }}class TestBean{ Long value; public Long getValue() {return value;} public void setValue(Long value) {this.value = value;}}class LongJsonDeserializer extends JsonDeserializer<Long>{ @Override public Long deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { Long value = jp.getLongValue(); return value * 3; }}


