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:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | 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 } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | 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:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | 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
}
1 2 3 4 5 | 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:
1 2 3 4 5 6 | 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:
1 | 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:
1 | 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: