package com.levelup.java.json;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Test;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Objects;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
/**
* This java example will demonstrate converting json to a java object.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/java-object-to-json/'>JSON to java object</a>
*
*/
public class JsontoJavaObject {
private static final Logger logger = Logger.getLogger(JsontoJavaObject.class);
static class Plane {
private String planeType;
public Plane() {
// TODO Auto-generated constructor stub
}
public String getPlaneType() {
return planeType;
}
@Override
public String toString() {
return Objects.toStringHelper(this).add("plane type: ", planeType).toString();
}
}
private final String ARRAY_AS_JSON = "[{\"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\"}";
@Test
public void unmarshall_json_to_object_with_gson () {
Gson gson = new Gson();
Plane plane = gson.fromJson(JSON_OBJECT, Plane.class);
logger.info(plane);
assertEquals("Sea Planes", plane.getPlaneType());
}
@Test
public void unmarshall_json_to_list_with_gson () {
Gson gson = new Gson();
@SuppressWarnings("serial")
List<Plane> planes = gson.fromJson(ARRAY_AS_JSON, new TypeToken<List<Plane>>(){}.getType());
logger.info(planes);
assertEquals(5, planes.size());
}
@Test
public void unmarshall_json_to_java_array_with_gson () {
Gson gson = new Gson();
Plane[] planes = gson.fromJson(ARRAY_AS_JSON, Plane[].class);
logger.info(Arrays.toString(planes));
assertEquals(5, planes.length);
}
@Test
public void unmarshall_json_to_object_with_jackson () throws JsonParseException, JsonMappingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
Plane plane = objectMapper.readValue(JSON_OBJECT, Plane.class);
logger.info(plane);
assertEquals("Sea Planes", plane.getPlaneType());
}
@Test
public void unmarshall_json_to_list_with_jackson () throws JsonParseException, JsonMappingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
List<Plane> planes = objectMapper.readValue(ARRAY_AS_JSON,
objectMapper.getTypeFactory().constructCollectionType(List.class, Plane.class));
logger.info(planes);
assertEquals(5, planes.size());
}
@Test
public void unmarshall_json_to_java_array_with_jackson () throws JsonParseException, JsonMappingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
Plane[] planes = objectMapper.readValue(ARRAY_AS_JSON, JsontoJavaObject.Plane[].class);
logger.info(Arrays.toString(planes));
assertEquals(5, planes.length);
}
}