Java tutorial
package com.epam.marshaller.jackson; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationConfig; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.module.SimpleModule; import org.junit.Assert; import org.junit.Test; import java.io.IOException; import java.util.Collection; import java.util.LinkedList; /** * It is a test for Jackson marshaller. * Date: 10/12/12 * * @author Andrei_Khadziukou */ public class JacksonMarshallerTest { @Test public void testMarshaller() throws IOException { ObjectMapper objectMapper = prepareObjectMapper(); User user = prepareUser(); String userJson = objectMapper.writeValueAsString(user); print(userJson); User unmarshalledUser = objectMapper.readValue(userJson, User.class); Assert.assertEquals(user, unmarshalledUser); } private ObjectMapper prepareObjectMapper() { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.disable(MapperFeature.AUTO_DETECT_GETTERS); objectMapper.disable(MapperFeature.AUTO_DETECT_IS_GETTERS); objectMapper.disable(MapperFeature.USE_GETTERS_AS_SETTERS); objectMapper.disable(MapperFeature.AUTO_DETECT_SETTERS); objectMapper.enable(MapperFeature.AUTO_DETECT_FIELDS); objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); objectMapper.setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE); objectMapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE); objectMapper.setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE); return objectMapper; } private User prepareUser() { User user = new User(); user.setName("Frank"); user.setHasDriveLicense(true); user.setXXFriends(new LinkedList<User>()); return user; } private void print(String s) { System.out.println(s); } private static class User { private boolean hasDriveLicense; //@Deprecated //private String fakeField; private String name; private Collection<User> friends; public Collection<User> getFriends() { print("Getters for friends"); return friends; } //public void setFriends(Collection<User> friends) { // print("Setter for friends"); //this.friends = friends; //} public void setXXFriends(Collection<User> friends) { print("XXXSetter for friends"); this.friends = friends; } public boolean isHasDriveLicense() { print("Getters for hasDriveLicense"); return hasDriveLicense; } private void print(String s) { System.out.println(s); } public void setHasDriveLicense(boolean hasDriveLicense) { print("Setters for hasDriveLicense"); this.hasDriveLicense = hasDriveLicense; } public String getName() { print("Getters for name"); return name; } public void setName(String name) { print("Setter for name"); this.name = name; } public String getFakeField() { print("getFakeField"); return null; //return fakeField; } public void setFakeField(String fakeField) { print("setFakeField"); //this.fakeField = fakeField; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; if (hasDriveLicense != user.hasDriveLicense) return false; if (friends != null ? !friends.equals(user.friends) : user.friends != null) return false; if (name != null ? !name.equals(user.name) : user.name != null) return false; return true; } @Override public int hashCode() { int result = (hasDriveLicense ? 1 : 0); result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (friends != null ? friends.hashCode() : 0); return result; } } }