【发布时间】:2014-03-04 13:35:02
【问题描述】:
我收到以下错误,但我没有找到解决办法:
无法识别的字段“GaugeDeviceId”(GaugeDevice 类),未标记为可忽略
问题似乎是,服务返回的属性名称以大写字母开头,而类属性以小写字母开头。
我试过了:
- 将 propertyNames 更改为第一个大写字母 - 相同的错误
- 将
@JsonProperty("SerialNo")添加到属性实例化 - 同样的错误 - 将
@JsonProperty("SerialNo")添加到相应的getter - 同样的错误 - 将
@JsonProperty("SerialNo")添加到相应的setter - 同样的错误 - 将
@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);
}
}
我希望错误的根源在这里?
【问题讨论】: