package com.levelup.java.json;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
/**
* This java example will demonstrate marshalling java object and java list to json
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/java-object-to-json/'>Java object to json</a>
*
*/
public class JavaObjectToJson {
private static final Logger logger = Logger.getLogger(JavaObjectToJson.class);
class Plane {
private String planeType;
public Plane(String planeType) {
super();
this.planeType = planeType;
}
public String getPlaneType() {
return planeType;
}
@Override
public String toString() {
return Objects.toStringHelper(this).add("plane type: ", planeType).toString();
}
}
private static final String JSON_ARRAY = "[{\"planeType\":\"Commercial Transport Planes\"},{\"planeType\":\"General Aviation Planes\"},{\"planeType\":\"Military Planes\"},{\"planeType\":\"Sea Planes\"},{\"planeType\":\"Special Purpose Planes\"}]";
private static final String JSON_OBJECT = "{\"planeType\":\"Sea Planes\"}";
private List<Plane> planes = Lists.newArrayList();
private Plane seaPlane;
@Before
public void seedData () {
planes.add(new Plane("Commercial Transport Planes"));
planes.add(new Plane("General Aviation Planes"));
planes.add(new Plane("Military Planes"));
planes.add(new Plane("Sea Planes"));
planes.add(new Plane("Special Purpose Planes"));
seaPlane = new Plane("Sea Planes");
}
@Test
public void marshall_java_object_to_json_with_gson () {
Gson gson = new Gson();
String json = gson.toJson(seaPlane);
logger.info(json);
assertEquals(JSON_OBJECT, json);
}
@Test
public void marshall_java_list_to_json_with_gson () {
Gson gson = new Gson();
String json = gson.toJson(planes);
logger.info(json);
assertEquals(JSON_ARRAY, json);
}
@Test
public void marshall_java_object_to_json_with_jackson () throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(seaPlane);
logger.info(json);
assertEquals(JSON_OBJECT, json);
}
@Test
public void marshall_java_list_to_json_with_jackson () throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(planes);
logger.info(json);
assertEquals(JSON_ARRAY, json);
}
}