Jackson Json 反序列化:无法识别的字段“...”,未标记为可忽略
我收到以下错误,我发现没有解决方案为我解决问题:
无法识别的字段“GaugeDeviceId”(类 GaugeDevice),未标记为可忽略
问题似乎在于,服务返回带有前导大写字母的属性名称,而类属性以小写字母开头。
我试过了:
- 将属性名称更改为第一个大写字母 - 相同的错误
- 添加到属性实例化 - 相同的错误
@JsonProperty("SerialNo")
- 添加到相应的 getters - 相同的错误
@JsonProperty("SerialNo")
- 添加到相应的 setter - 相同的错误
@JsonProperty("SerialNo")
- 添加到所有这些(只是为了好玩) - 相同的错误
@JsonProperty("SerialNo")
(注:只是一个例子)@JsonProperty("SerialNo")
奇怪的是,该注释:应该完全抑制该错误,但它仍然触发...@JsonIgnoreProperties(ignoreUnknown = true)
这里的类:(注意:不完整)
@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);
}
}
我希望错误在这里有其根源?