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;
}
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());
}
}