Я знаю, что этот вопрос задавался, прежде чем я нашел время, чтобы посмотреть на другие ответы, и ни один из них не помог.Я использую Jersey service
для своего приложения, в моем приложении у меня есть несколько объектов, которые у меня consume
, некоторые объекты работают нормально, они потребляются без hussle
, но нижеприведенный объект просто не будет работать.
public class Params {
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"my_destination"
})
@JsonProperty("my_destination")
private Destination myDestination;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<>();
@JsonProperty("my_destination")
public Destination getMyDestination() {
return myDestination;
}
@JsonProperty("my_destination")
public void setDestination(Destination destination) {
this.myDestination = destination;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
public class Destination {
@JsonProperty("latitude")
private Double latitude;
@JsonProperty("longitude")
private Double longitude;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<>();
@JsonProperty("latitude")
public Double getLatitude() {
return latitude;
}
@JsonProperty("latitude")
public void setLatitude(Double latitude) {
this.latitude = latitude;
}
@JsonProperty("longitude")
public Double getLongitude() {
return longitude;
}
@JsonProperty("longitude")
public void setLongitude(Double longitude) {
this.longitude = longitude;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
И мой Jersey service
выглядит как
@POST
@Path("/testparams")
@ManagedAsync
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public void testParams(@Suspended final AsyncResponse asyncResponse, Params params) {
// Params mParams = new Gson().fromJson(params, Params.class);
}
Если я заменю Entities
на Gson
annotations
, как
public class Params {
@SerializedName("my_destination")
@Expose
private Destination myDestination;
}
public class Destination {
@SerializedName("latitude")
@Expose
private Double latitude;
@SerializedName("longitude")
@Expose
private Double longitude;
}
И заменим параметр вмой сервис со строкой вместо этого типа
@POST
@Path("/testparams")
@ManagedAsync
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public void testParams(@Suspended final AsyncResponse asyncResponse, String params) {
Params mParams = new Gson().fromJson(params, Params.class);
}
Строка Params mParams = new Gson().fromJson(params, Params.class);
выполняется в противном случае приложение застревает и ничего не делает.На данный момент я не уверен, что делать или где я могу пойти не так.
Приложение не дает никаких исключений.