Java json – jackson Mix- In Annotations

Also see json simple org.json

Annotations are a great way to manage serialization and deserialization in Jackson. However, what do you do if you want to annotate a third party class, or if you dont want to tightly couple your POJOs to jackson annotations. This is where Mix-in comes into play. You define a mix-in abstract class that is kind of a proxy to the actual class. Annotations are then definied over this proxy class

Jackson Mix-In Example

package com.studytrails.json.jackson;


import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class SerializeExample3 {
	public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
		ObjectMapper mapper = new ObjectMapper();
		mapper.addMixInAnnotations(Bird.class, BirdMixIn.class);
		Bird bird = new Bird("scarlet Ibis");

		mapper.writerWithDefaultPrettyPrinter().writeValue(new File("bird.json"), bird);


The Bird class

package com.studytrails.json.jackson;

public class Bird {

	private String name;
	private String sound;
	private String habitat;

	public Bird(String name) { = name;

	public String getName() {
		return name;

	public String getSound() {
		return sound;

	public String getHabitat() {
		return habitat;

	public void setSound(String sound) {
		this.sound = sound;

	public void setHabitat(String habitat) {
		this.habitat = habitat;

	public String toString() {
		return "Bird [name=" + name + ", sound=" + sound + ", habitat=" + habitat + "]";


The Mix-in class

package com.studytrails.json.jackson;

import com.fasterxml.jackson.annotation.JsonProperty;

public abstract class BirdMixIn {
	BirdMixIn(@JsonProperty("name") String name) {

	abstract String getSound();

	abstract String getHabitat();

1 thought on “Java json – jackson Mix- In Annotations”

  1. Thanks for great tutorials.
    according to documentation “addMixInAnnotations()” method which returns void, is replaced by a fluent form of the method; addMixIn(Class, Class) which returns ObjectMapper; since 2.5.
    This method is used in SerializeExample3 class above.


Leave a Comment