Exception in thread "main" com.fasterxml.Hymanson.databind.exc.UnrecognizedPropertyException: Unrecognized field "employees" (class hello.EmployeeList), not marked as ignorable (one known property: "employeesList"])
at [Source: (String)"{"employees":[{"id":111,"name":"Lautturi"}, {"id":112,"name":"James"}]}"; line: 1, column: 15] (through reference chain: hello.EmployeeList["employees"])
at com.fasterxml.Hymanson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
at com.fasterxml.Hymanson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1132)
at com.fasterxml.Hymanson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2202)
at com.fasterxml.Hymanson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1705)
at com.fasterxml.Hymanson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1683)
at com.fasterxml.Hymanson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:320)
at com.fasterxml.Hymanson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at com.fasterxml.Hymanson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
at com.fasterxml.Hymanson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4730)
at com.fasterxml.Hymanson.databind.ObjectMapper.readValue(ObjectMapper.java:3677)
at com.fasterxml.Hymanson.databind.ObjectMapper.readValue(ObjectMapper.java:3645)
class Employee {
String name;
int id;
// getter and setter
...
}
class EmployeeList {
private List<Employee> employees;
public void EmployeeList() {
}
public List<Employee> getEmployeeList() {
return employees;
}
public void setEmployeeList(List<Employee> list) {
employees = list;
}
}
public class Lautturi {
public static void main(String[] args) throws JsonMappingException, JsonProcessingException {
String jsonString = "{\"employees\":[{\"id\":111,\"name\":\"Lautturi\"},{\"id\":112,\"name\":\"java\"}]}";
ObjectMapper mapper = new ObjectMapper();
EmployeeList employeList = mapper.readValue(jsonString,EmployeeList.class);
...
}
}
There is a field named employees in json.
But there is no corresponding getter and stter in EmployeeList class.
We only have getEmployeeList getter.
(one known property: "employeesList"])
change
public List<Employee> getEmployeeList() {
public void setEmployeeList(List<Employee> list) {
to
public List<Employee> getEmployees() {
public void setEmployees(List<Employee> list) {
It is case insensitive.
You can write it like this:
public List<Employee> getemployees() {
It's OK.