Hallo Zusammen!
Folgende Situation:
Ich mache einen Rest-Call gegen die Google Geocoder API und bekommen das Ergebnis als JSON-String, welchen ich mit Jackson in ein Objekt mappen möchte. Dazu existiert folgende Klasse (getter/setter ausgelassen):
und folgender Aufruf:
Die apiResponse hat folgenden Inhalt:
Das Problem ist das ich immer die folgende Exception bekomme:
Ich kann leider nicht nachvollziehen wieso, da ich denke, das meine GeoCodeResponse Klasse richtig modelliert ist. Aber wenn ich die Annotation @JsonIgnoreProperties(ignoreUnknown = true) benutze sind die Felder addressComponents sowie formattedAddress immer NULL obwohl diese Objekte im JSON-String existieren...
Bin Danke im voraus für jede Anregung!!
Folgende Situation:
Ich mache einen Rest-Call gegen die Google Geocoder API und bekommen das Ergebnis als JSON-String, welchen ich mit Jackson in ein Objekt mappen möchte. Dazu existiert folgende Klasse (getter/setter ausgelassen):
Code:
//@JsonIgnoreProperties(ignoreUnknown = true)
public class GeoCodeResponse
{
@JsonProperty("status")
public String status;
@JsonProperty("results")
public Results[] results;
public GeoCodeResponse() {
}
public class Results
{
@JsonCreator
public Results() {
}
@JsonProperty("formatted_address")
public String formattedAddress;
@JsonProperty("address_components")
public AddressComponents[] addressComponents;
}
public class AddressComponents
{
@JsonCreator
public AddressComponents() {
}
public String long_name;
public String short_name;
public String[] types;
}
}
und folgender Aufruf:
Code:
final String apiResponse = getGeoCoderApiResponse(latitude,
LOG.debug("api response: {}", apiResponse);
try {
final GeoCodeResponse response = objectMapper.readValue(apiResponse, GeoCodeResponse.class);
LOG.debug("parsed GeoCodeResponse: {}", response);
}
Die apiResponse hat folgenden Inhalt:
Code:
{
"results" : [
{
"address_components" : [
{
"long_name" : "717",
"short_name" : "717",
"types" : [ "route" ]
},
{
"long_name" : "Värmland County",
"short_name" : "Värmland County",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Sweden",
"short_name" : "SE",
"types" : [ "country", "political" ]
},
{
"long_name" : "66991",
"short_name" : "66991",
"types" : [ "postal_code" ]
},
{
"long_name" : "Deje",
"short_name" : "Deje",
"types" : [ "postal_town" ]
}
],
"formatted_address" : "717, 669 91 Deje, Sweden",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 59.55148389999999,
"lng" : 13.41808010
},
"southwest" : {
"lat" : 59.54473329999999,
"lng" : 13.41663310
}
},
"location" : {
"lat" : 59.54815460,
"lng" : 13.4178270
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 59.55148389999999,
"lng" : 13.41870558029150
},
"southwest" : {
"lat" : 59.54473329999999,
"lng" : 13.41600761970850
}
}
},
"types" : [ "route" ]
},
{
"address_components" : [
{
"long_name" : "66731",
"short_name" : "66731",
"types" : [ "postal_code" ]
},
{
"long_name" : "Värmland County",
"short_name" : "Värmland County",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Sweden",
"short_name" : "SE",
"types" : [ "country", "political" ]
},
{
"long_name" : "Forshaga",
"short_name" : "Forshaga",
"types" : [ "postal_town" ]
}
],
"formatted_address" : "667 31 Forshaga, Sweden",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 59.56482290,
"lng" : 13.49849390
},
"southwest" : {
"lat" : 59.5299580,
"lng" : 13.41098690
}
},
"location" : {
"lat" : 59.54792410,
"lng" : 13.45675190
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 59.56482290,
"lng" : 13.49849390
},
"southwest" : {
"lat" : 59.5299580,
"lng" : 13.41098690
}
}
},
"types" : [ "postal_code" ]
},
{
"address_components" : [
{
"long_name" : "Forshaga",
"short_name" : "Forshaga",
"types" : [ "postal_town" ]
},
{
"long_name" : "Värmland County",
"short_name" : "Värmland County",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Sweden",
"short_name" : "SE",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Forshaga, Sweden",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 59.57255210,
"lng" : 13.59030310
},
"southwest" : {
"lat" : 59.4652470,
"lng" : 13.39565190
}
},
"location" : {
"lat" : 59.52647330000001,
"lng" : 13.49340930
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 59.57255210,
"lng" : 13.59030310
},
"southwest" : {
"lat" : 59.4652470,
"lng" : 13.39565190
}
}
},
"types" : [ "postal_town" ]
},
{
"address_components" : [
{
"long_name" : "Forshaga V",
"short_name" : "Forshaga V",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Värmland County",
"short_name" : "Värmland County",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Sweden",
"short_name" : "SE",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Forshaga V, Sweden",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 59.7621330,
"lng" : 13.51439710
},
"southwest" : {
"lat" : 59.4851720,
"lng" : 13.34480110
}
},
"location" : {
"lat" : 59.65289830,
"lng" : 13.40750750
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 59.7621330,
"lng" : 13.51439710
},
"southwest" : {
"lat" : 59.4851720,
"lng" : 13.34480110
}
}
},
"types" : [ "sublocality", "political" ]
},
{
"address_components" : [
{
"long_name" : "Forshaga",
"short_name" : "Forshaga",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Värmland County",
"short_name" : "Värmland County",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Sweden",
"short_name" : "SE",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Forshaga, Sweden",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 59.80336310,
"lng" : 13.65750890
},
"southwest" : {
"lat" : 59.4783970,
"lng" : 13.35987910
}
},
"location" : {
"lat" : 59.62834600000001,
"lng" : 13.53006610
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 59.80336310,
"lng" : 13.65750890
},
"southwest" : {
"lat" : 59.4783970,
"lng" : 13.35987910
}
}
},
"types" : [ "administrative_area_level_2", "political" ]
},
{
"address_components" : [
{
"long_name" : "Värmland County",
"short_name" : "Värmland County",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Sweden",
"short_name" : "SE",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Värmland County, Sweden",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 61.06945409999999,
"lng" : 14.489750
},
"southwest" : {
"lat" : 58.83082580000001,
"lng" : 11.6818770
}
},
"location" : {
"lat" : 59.72940650,
"lng" : 13.23540240
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 61.06945409999999,
"lng" : 14.489750
},
"southwest" : {
"lat" : 58.83085910,
"lng" : 11.6818770
}
}
},
"types" : [ "administrative_area_level_1", "political" ]
},
{
"address_components" : [
{
"long_name" : "Sweden",
"short_name" : "SE",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Sweden",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 69.05997090,
"lng" : 24.16659230
},
"southwest" : {
"lat" : 55.33670240,
"lng" : 10.96318660
}
},
"location" : {
"lat" : 60.12816100000001,
"lng" : 18.6435010
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 69.05997090,
"lng" : 24.1660240
},
"southwest" : {
"lat" : 55.33670240,
"lng" : 10.96318660
}
}
},
"types" : [ "country", "political" ]
}
],
"status" : "OK"
}
Das Problem ist das ich immer die folgende Exception bekomme:
Code:
JsonMappingException: Unrecognized field "address_components" (Class net.GeoCodeResponse), not marked as ignorable
Ich kann leider nicht nachvollziehen wieso, da ich denke, das meine GeoCodeResponse Klasse richtig modelliert ist. Aber wenn ich die Annotation @JsonIgnoreProperties(ignoreUnknown = true) benutze sind die Felder addressComponents sowie formattedAddress immer NULL obwohl diese Objekte im JSON-String existieren...
Bin Danke im voraus für jede Anregung!!