Consider you have a Simple Json with two values ( lable and value ) to read and these have to map to the POJO Class - ContentType .
Library can be included in the project by using the following in the pom.xml or just get the latest from http://jackson.codehaus.org/
JSON Data
[
{
"label": "Movies",
"value": "movie"
},
{
"label": "TV Shows",
"value": "tvshow"
}
]
POJO
public class ContentType {
private String label;
private String value;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Jackson ObjectMapper for Reading
It can be reaad by using the Jackson mapper , as shown below . reply - has the POJO string shown above
ObjectMapper mapper = new ObjectMapper(); List<contenttype> ctl = mapper.readValue(reply, List.class);Package : org.codehaus.jackson.map
Library can be included in the project by using the following in the pom.xml or just get the latest from http://jackson.codehaus.org/
pom.xml
<dependency>
<groupid>org.codehaus.jackson</groupid>
<artifactid>jackson-mapper-asl</artifactid>
<version>1.9.13</version>
</dependency>
<dependency>
<groupid>org.codehaus.jackson</groupid>
<artifactid>jackson-core-asl</artifactid>
<version>1.9.13</version>
</dependency>
Using Generics you can have a utility to parse data in JSON and get String data from POJO
package util;
import java.util.ArrayList;
import java.util.HashMap;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.type.TypeFactory;
import org.codehaus.jackson.map.DeserializationConfig;
public class JsonStringConverter {
public static final <E> String getAsJSON(E inClass) throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(inClass) ;
}
public static final <E> E parseAsInputClassForArrayList(String json,Class outClass) throws Exception {
ObjectMapper mapper = new ObjectMapper();
TypeFactory t = TypeFactory.defaultInstance();
mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
return (E) mapper.readValue(json,t.constructCollectionType(ArrayList.class,outClass));
}
public static final <E> E parseAsInputClassForSimpleClass(String json,Class outClass) throws Exception {
ObjectMapper mapper = new ObjectMapper();
return (E) mapper.readValue(json,outClass);
}
public static final <E> E parseAsInputClassForHashMap(String json,Class key,Class outClass) throws Exception {
ObjectMapper mapper = new ObjectMapper();
TypeFactory t = TypeFactory.defaultInstance();
mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
return (E) mapper.readValue(json,t.constructMapType(HashMap.class,key,outClass));
}
}
No comments:
Post a Comment