Mam złożone JSON, które próbuję analizować przy użyciu Jackson JSON. Jestem nieco zdezorientowany, jak dostać się do obiektu latLng, aby wyciągnąć wartości lat, lng. Jest to część JSON:Korzystanie z Jackson JSON Parser: Complex JSON?
{
"results": [
{
"locations": [
{
"latLng": {
"lng": -76.85165,
"lat": 39.25108
},
"adminArea4": "Howard County",
"adminArea5Type": "City",
"adminArea4Type": "County",
To, co mam tak daleko w Javie, aby wyciągnąć go:
public class parkJSON
{
public latLng _latLng;
public static class latLng
{
private String _lat, _lng;
public String getLat() { return _lat; }
public String getLon() { return _lng; }
}
}
i
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
parkJSON geo = mapper.readValue(parse, parkJSON.class);
System.out.println(mapper.writeValueAsString(geo));
String lat = geo._latLng.getLat();
String lon = geo._latLng.getLon();
output = lat + "," + lon;
System.out.println("Found Coordinates: " + output);
ZDECYDOWANE To jak ja rozwiązano problem, używając modelu drzewa do wykorzystania w przyszłości:
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
JsonNode rootNode = mapper.readTree(parse);
JsonNode firstResult = rootNode.get("results").get(0);
JsonNode location = firstResult.get("locations").get(0);
JsonNode latLng = location.get("latLng");
String lat = latLng.get("lat").asText();
String lng = latLng.get("lng").asText();
output = lat + "," + lng;
System.out.println("Found Coordinates: " + output);
Mam to działa przy użyciu metody modelu drzewa –
ObjectMapper mapper = new ObjectMapper(); // może ponownie użyć, udostępnić globalnie mapper.configure (DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode rootNode = mapper.readTree (parsowanie); JsonNode firstResult = rootNode.get ("wyniki"). Get (0); Lokalizacja JsonNode = firstResult.get ("locations"). Get (0); JsonNode latLng = location.get ("latLng"); String lat = latLng.get ("lat"). AsText(); String lng = latLng.get ("lng"). AsText(); –
To świetnie :-) Powodzenia w projekcie. – fvu