Java JSON processing with Jackson
Let us see how we can use Jackson Java JSON Processor to convert a java object into JSON and vice versa. We can download the jackson-all-1.6.4.jar from Jackson download page.
The key class which does the marshalling and unmarshalling is org.codehaus.jackson.map.ObjectMapper.
Let us create a User java bean as follows:
package com.sivalabs.json;
import java.util.Date;
public class User {
private String userId;
private UserName userName;
private Date dob;
@Override
public String toString(){
return "User [dob=" + dob + ", userId=" + userId + ", userName="+ userName + "]";
}
//setters and getters
}
package com.sivalabs.json;
public class UserName {
private String firstname;
private String middlename;
private String lastname;
@Override
public String toString()
{
return "UserName [firstname=" + firstname +
", lastname=" + lastname+
", middlename=" + middlename + "]";
}
//setters and getters
}
Now let us create an instance of User and marshall it into JSON:
ObjectMapper mapper = new ObjectMapper();
UserName userName = new UserName();
userName.setFirstname("Katamreddy");
userName.setMiddlename("Siva");
userName.setLastname("PrasadReddy");
User user = new User();
user.setUserId("1");
user.setUserName(userName);
user.setDob(new Date());
Writer strWriter = new StringWriter();
mapper.writeValue(strWriter, user);
String userDataJSON = strWriter.toString();
System.out.println(userDataJSON);
This will print the User data in JSON format as :
{
“userId”:”1″,
“userName”:
{
“firstname”:”Katamreddy”,
“middlename”:”Siva”,
“lastname”:”PrasadReddy”
},
“dob”:1300878089906
}
Now let us unmarshall the following user data in json format into User Object:
{
“userId”:”100″,
“userName”:
{
“firstname”:”K”,
“middlename”:”Siva”,
“lastname”:”Prasad”
},
“dob”:1300878089906
}
String userDataJSON =
"{\"userId\":\"100\",\"userName\":{\"firstname\":\"K\""+
",\"middlename\":\"Siva\",\"lastname\":\"Prasad\"},\"dob\":1300878089906}";
User userFromJSON = mapper.readValue(userDataJSON, User.class);
System.out.println(userFromJSON);
This will print the User object as:
User [dob=Wed Mar 23 16:31:29 IST 2011, userId=100, userName=UserName [firstname=K, lastname=Prasad, middlename=Siva]]
The Date value is marshalled as Timestamp which is the default behaviour. If you want you can change the DateFormat as follows:
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
SerializationConfig serConfig = mapper.getSerializationConfig();
serConfig.setDateFormat(dateFormat);
DeserializationConfig deserializationConfig = mapper.getDeserializationConfig();
deserializationConfig.setDateFormat(dateFormat);
mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
Then the User JSON will be:
{
“userId”:”1″,”userName”:
{
“firstname”:”Katamreddy”,
“middlename”:”Siva”,
“lastname”:”PrasadReddy”
},
“dob”:”03-23-2011″
}
We can also marshall a Java Object as json into a file as:
mapper.writeValue(new File("user.json"), user);
This will create a file user.json as:
{
“userId”:”100″,
“userName”:
{
“firstname”:”K”,
“middlename”:”Siva”,
“lastname”:”Prasad”
},
“dob”:1300878089906
}
We can build the User object from user,json as:
User user = mapper.readValue(new File("user.json"), User.class);
Reference: JSON processing using Jackson Java JSON Processor from our JCG partner Siva Prasad Reddy.
Related Articles:




