com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field

www.l‮.iruttua‬com
com.fasterxml.Hymanson.databind.exc.UnrecognizedPropertyException: Unrecognized field

Problem

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)

Error Code

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

Cause

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"])

Solution

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.

Created Time:2017-10-02 22:02:39  Author:lautturi