-
Notifications
You must be signed in to change notification settings - Fork 114
JacksonSampleSimplePojoMapper
Paul Brown edited this page Oct 19, 2011
·
1 revision
- page was renamed from SimplePojoMapper <<TableOfContents(4)>>
If you just need to map POJOs (Plain Old Java Objects) back and forth from JSON -- maybe because you want to pass data between Java and some other programming language, or maybe because you want to persist POJOs in a JSON format -- just below is a simple PojoMapper class that does this.
// Create a POJO
MyPojo pojo = new MyPojo();
// Populate the POJO
// Convert the POJO to a JSON string
String pojoAsString = PojoMapper.toJson(pojo, true);
// Convert the JSON string back into a POJO
pojo = (MyPojo) PojoMapper.fromJson(pojoAsString, MyPojo.class);
// Convert the POJO to a JSON string that gets stored in a file
FileWriter fw = new FileWriter("pojo.txt");
PojoMapper.toJson(pojo3, fw, true);
// Convert the JSON string in the file back into a POJO
FileReader fr = new FileReader("pojo.txt");
pojo = (MyPojo) PojoMapper.fromJson(fr, MyPojo.class);
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public class PojoMapper {
private static ObjectMapper m = new ObjectMapper();
private static JsonFactory jf = new JsonFactory();
public static <T> Object fromJson(String jsonAsString, Class<T> pojoClass)
throws JsonMappingException, JsonParseException, IOException {
return m.readValue(jsonAsString, pojoClass);
}
public static <T> Object fromJson(FileReader fr, Class<T> pojoClass)
throws JsonParseException, IOException
{
return m.readValue(fr, pojoClass);
}
public static String toJson(Object pojo, boolean prettyPrint)
throws JsonMappingException, JsonGenerationException, IOException {
StringWriter sw = new StringWriter();
JsonGenerator jg = jf.createJsonGenerator(sw);
if (prettyPrint) {
jg.useDefaultPrettyPrinter();
}
m.writeValue(jg, pojo);
return sw.toString();
}
public static void toJson(Object pojo, FileWriter fw, boolean prettyPrint)
throws JsonMappingException, JsonGenerationException, IOException {
JsonGenerator jg = jf.createJsonGenerator(fw);
if (prettyPrint) {
jg.useDefaultPrettyPrinter();
}
m.writeValue(jg, pojo);
}
}
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class MyPojo {
private boolean on;
private String name;
private Map<String,Date> map;
public void setOn(boolean on) {
this.on = on;
}
public boolean isOn() {
return this.on;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setMap(Map<String,Date> map) {
this.map = map;
}
public Map<String,Date> getMap() {
return this.map;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("on=" + on);
sb.append(" name=" + name);
sb.append(" map={");
for (Map.Entry<String,Date> entry : this.map.entrySet()) {
sb.append("" + entry.getKey() + "=" + entry.getValue());
}
sb.append("}");
return sb.toString();
}
public static void main(String[] args) {
// Create a POJO
MyPojo pojo = new MyPojo();
// Populate it with some data
pojo.setName("Lucky");
pojo.setOn(true);
Map<String,Date> map = new HashMap<String,Date>();
map.put("now", new Date());
pojo.setMap(map);
// Map it to JSON and then back again
try {
String pojoAsString = PojoMapper.toJson(pojo, true);
System.out.println("POJO as string:\n" + pojoAsString + "\n");
MyPojo pojo2 = (MyPojo) PojoMapper.fromJson(pojoAsString, MyPojo.class);
System.out.println("POJO toString():\n" + pojo2 + "\n");
} catch (Exception e) {
e.printStackTrace();
}
// Create another POJO
MyPojo pojo3 = new MyPojo();
pojo3.setName("Baldwin");
pojo3.setOn(false);
Map<String,Date> map2 = new HashMap<String,Date>();
map2.put("now", new Date());
pojo3.setMap(map2);
// Map it to JSON, store it on disk and then read it back
try {
FileWriter fw = new FileWriter("pojo.txt");
PojoMapper.toJson(pojo3, fw, true);
FileReader fr = new FileReader("pojo.txt");
MyPojo pojo4 = (MyPojo) PojoMapper.fromJson(fr, MyPojo.class);
System.out.println("POJO read from file:\n" + pojo4);
} catch (Exception e) {
e.printStackTrace();
}
}
}
POJO as string:
{
"name" : "Lucky",
"on" : true,
"map" : {
"now" : 1270349496303
}
}
POJO toString():
on=true name=Lucky map={now=Sat Apr 03 19:51:36 PDT 2010}
POJO read from file:
on=false name=Baldwin map={now=Sat Apr 03 19:51:36 PDT 2010}Back to JacksonFeatures11
CategoryJackson