package org.javamaster.b2c.test.jackson; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import org.javamaster.b2c.test.model.jackson.Car; import java.io.IOException; /** * 反序列化器 * * @author yudong * @date 2019/6/18 */ public class CarDeserializer extends StdDeserializer<Car> { private static final long serialVersionUID = 4977601024588834191L; public CarDeserializer(Class<?> c) { super(c); } @Override public Car deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { Car car = new Car(); while (!parser.isClosed()) { JsonToken jsonToken = parser.nextToken(); if (JsonToken.FIELD_NAME == jsonToken) { String fieldName = parser.getCurrentName(); parser.nextToken(); if ("doors".equals(fieldName)) { car.setDoors(parser.getValueAsInt()); } else if ("brand".equals(fieldName)) { car.setBrand(parser.getValueAsString()); } } } return car; } }