我收到以下错误,但找不到解决方法对我有用:
问题似乎是,该服务返回的属性名称前带有一个大写字母,而类属性则以一个下一个字母开头。
我试过了:
@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