在我花时间查看其他答案之前,我知道已经问过这个问题,但没有一个有帮助。我为我的应用程序使用了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;
}
并使用String代替
替换我服务中的参数 @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);
被执行,否则应用程序被卡住并且不执行任何操作。此时,我不确定该怎么办或可能在哪里出错。
该应用程序没有任何异常。