When the JSON field name doesn’t exactly match the Java field names, we can use @JsonProperty
to change the name of a JSON field in Jackson.
Table of contents:
- 1. Setup Jackson
- 2. JSON Unrecognized field
- 3. Custom field name with @JsonProperty
- 4. Download Source Code
- 5. References
P.S Tested with Jackson 2.17.0
1. Setup Jackson
Puts jackson-databind
at pom.xml
.
pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.0</version>
</dependency>
2. JSON Unrecognized field
Review below JSON data, the JSON field name nick_name
doesn’t match the Person
name. If we use Jackson to do the data binding, it will hits error like Unrecognized field "nick_name"
.
{
"nick_name": "mkyong",
"age": 42
}
Person.java
public class Person {
private String name;
private int age;
//getters, setters, constructors and etc...
}
3. Custom field name with @JsonProperty
To fix it, we can use @JsonProperty
to change the matching field name of the JSON in Jackson.
Person.java
import com.fasterxml.jackson.annotation.JsonProperty;
public class Person {
@JsonProperty("nick_name")
private String name;
private int age;
//getters, setters, constructors and etc...
}
CustomFieldNameExample.java
package com.mkyong.json.jackson.tips;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mkyong.json.model.Person;
public class CustomFieldNameExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
String json = "{\"nick_name\":\"mkyong\",\"age\":42}";
Person person = mapper.readValue(json, Person.class);
System.out.println(person);
String newJson = mapper.writeValueAsString(person);
System.out.println(newJson);
}
}
Output
Person{name='mkyong', age=42}
{"age":42,"nick_name":"mkyong"}
4. Download Source Code
$ git clone https://github.com/mkyong/java-json
$ cd jackson
5. References
- Jackson Github
- Jackson data-binding
- Jackson Convert Java Object to / from JSON
- How to parse JSON string with Jackson
The post Jackson Custom field name with @JsonProperty appeared first on Mkyong.com.