// TODO I'm creating a new object mapper here because my original mapper has an instance of the deserializer
// associated with it. Therefore, if I try to read the value using codec, I'll get an infinite loop (it'll come
// back here).
ObjectMapper mapper = new ObjectMapper();
School school = mapper.readValue(node, School.class);
// Apply nested properties by hand
JsonNode locationNode = node.get("location");
JsonNode principalNode = node.get("principal");
school.setAddress(locationNode.get("address").getTextValue());
school.setCity(locationNode.get("city").getTextValue());
school.setState(locationNode.get("state").getTextValue());
school.setPostalCode(locationNode.get("zip").getTextValue());
school.setPrincipalName(principalNode.get("name").getTextValue());
school.setPrincipalEmail(principalNode.get("email").getTextValue());
return school;
}