泽西岛不使用JSON对象

时间:2019-05-29 15:07:22

标签: json jackson jersey

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

该应用程序没有任何异常。

0 个答案:

没有答案