我收到以下错误,但找不到解决方法对我有用:



问题似乎是,该服务返回的属性名称前带有一个大写字母,而类属性则以一个下一个字母开头。

我试过了:

  • 将propertyNames更改为首个大写字母-相同错误
  • @JsonProperty("SerialNo")添加到属性实例化-相同错误
  • @JsonProperty("SerialNo")添加到相应的 setter/getter -相同错误
  • @JsonProperty("SerialNo")添加到相应的二传手-相同错误
  • 向所有人添加@JsonProperty("SerialNo")(只是为了好玩)-相同错误

  • (注意:@JsonProperty("SerialNo")只是一个示例)

    奇怪的是,该注释:@JsonIgnoreProperties(ignoreUnknown = true)应该完全抑制该错误,但仍在触发...

    这里是类(class):(注:不完整)
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class GaugeDevice
    {
        private int gaugeDeviceId;
        private Date utcInstallation;
        private String manufacturer;
        private float valueOffset;
        private String serialNo;
        private String comment;
        private int digitCount;
        private int decimalPlaces;
    
        @JsonProperty("SerialNo")
        public String getSerialNo() {
            return serialNo;
        }
    
        public void setSerialNo(String serialNo) {
            this.serialNo = serialNo;
        }
    
        @JsonProperty("Comment")
        public String getComment() {
            return comment;
        }
    
        public void setComment(String comment) {
            this.comment = comment;
        }
    

    出路在哪里?请帮忙。

    编辑:

    这是客户端类:(只是一个简单的测试客户端)
    import ccc.android.meterdata.*;
    
    import javax.ws.rs.client.Client;
    import javax.ws.rs.client.ClientBuilder;
    import javax.ws.rs.client.Invocation;
    import org.glassfish.jersey.jackson.JacksonFeature;
    
    public class RestClient
    {
        private String connectionUrl;
        private javax.ws.rs.client.Client client;
    
        public RestClient(String baseUrl) {
             client = ClientBuilder.newClient();;
             connectionUrl = baseUrl;
             client.register(JacksonFeature.class);
        }
    
        public GaugeDevice GetGaugeDevice(int id){
    
            String uri = connectionUrl + "/GetGaugeDevice/" + id;
            Invocation.Builder bldr = client.target(uri).request("application/json");
            return bldr.get(GaugeDevice.class);
        }
    }
    

    我希望错误的根源在这里?

    最佳答案

    要检查的另一件事是PropertyNamingStrategy,它将允许Jackson使用“Pascal命名”并将JSON属性与POJO属性匹配。在此处查看f.ex:http://www.javacodegeeks.com/2013/04/how-to-use-propertynamingstrategy-in-jackson.html

    10-08 02:14