custom deserializer jackson for a property java code example

Example 1: java json deserializer

private Car parseCar(JsonNode node) {
        Car car;
        ObjectMapper mapper = new ObjectMapper();
        SimpleModule module = new SimpleModule().addDeserializer(Car.class, new CarDeserializer());
        mapper.registerModule(module);
        organization = mapper.convertValue(node, Car.class);
        return car;
}

//deserializer class
public class CarDeserializer extends StdDeserializer<Car> {

    public CarDeserializer() {
        super(Car.class);
    }

    @Override
    public Car deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.registerModule(new JodaModule());

        Car car = new Car();
        car.setName(getValueAsText(root, "carName"));
        car.setDoorCount(getValueAsInt(root,"doorCount"));
        car.setColor(getValueAsText(root,"color"));
		car.setType(getValueAsText(root,"type"));

        return car;
    }

}

Example 2: how to write deserlizer java

package net.sghill.example;

import net.sghill.example.User;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.ObjectCodec;
import org.codehaus.jackson.map.DeserializationContext;
import org.codehaus.jackson.map.JsonDeserializer;

import java.io.IOException;

public class UserDeserializer extends JsonDeserializer<User> {

    @Override
    public User deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        ObjectCodec oc = jsonParser.getCodec();
        JsonNode node = oc.readTree(jsonParser);
        return new User(null, node.get("username").getTextValue(), node.get("password").getTextValue());
    }
}