Jackson Simple and intuitive to use. For me, the best available. Start with Simple Data Binding , it will throw out everything it finds in Maps and Lists.
Like this:
ObjectMapper mapper = new ObjectMapper(); Map<String,Object> yourData = mapper.readValue(new File("yourdata.json"), Map.class);
That is all that is needed.
A good and quick introduction can be found here.
And a complete working example with your actual data:
import java.io.IOException; import java.util.Map; import org.codehaus.jackson.map.ObjectMapper; public class Main { public static void main(String[] args) throws IOException { ObjectMapper mapper = new ObjectMapper(); Map<?,?> rootAsMap = mapper.readValue( "{\"query\":{\"latitude\":39.9889,\"longitude\":-82.8118},\"timestamp\":1310252291.861,\"address\":{\"geometry\":{\"coordinates\":[-82.81168367358264,39.9887910986731],\"type\":\"Point\"},\"properties\":{\"address\":\"284 Macdougal Ln\",\"distance\":\"0.02\",\"postcode\":\"43004\",\"city\":\"Columbus\",\"county\":\"Franklin\",\"province\":\"OH\",\"country\":\"US\"},\"type\":\"Feature\"}}".getBytes(), Map.class); System.out.println(rootAsMap); Map query = (Map) rootAsMap.get("query"); Map address = (Map) rootAsMap.get("address"); Map addressProperties = (Map) address.get("properties"); String county = (String) addressProperties.get("county"); System.out.println("County is " + county); } }
Now all this network manipulation also illustrates the Bojo point very well, using full binding (by creating a Java class that reflects the contents of the JSON data) will work better in the end.
source share