我收到以下錯誤,但沒有找到解決方法,我發現對我有用: 無法識別的字段「GaugeDeviceId」(Class GaugeDevice)因爲可以忽略Jackson Json反序列化:無法識別的字段「...」,未標記爲可忽略的
問題似乎是,該服務返回具有前導大寫字母的屬性名稱,而類屬性以較低的字母開頭。
我嘗試:
- 改變propertyNames到第一上字母 - 相同的錯誤
- 加入@JsonProperty( 「的SerialNo」)添加到屬性的實例 - 相同的錯誤
- 加入@JsonProperty(「的SerialNo 「)到相應的獲取器 - 相同的錯誤
- 將@JsonProperty(」SerialNo「)添加到相應的setters - 相同的錯誤
- 將@JsonProperty(」SerialNo「)添加到所有這些(僅用於fu N) - 同樣的錯誤
(注:@JsonProperty( 「的SerialNo」)只是一個例子)
奇怪的是,該註釋:@JsonIgnoreProperties(ignoreUnknown =真)應該禁止正是錯誤,但它仍然是觸發...
這裏的類:(注:未完成)
@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);
}
}
我希望在這裏的錯誤有它的根源在哪裏?
是的,具有。我的代碼只是一個出場。 我已經試過,沒有成功。 – chile
@chile你可能會添加反序列化對象的代碼嗎?如果你的'GaugeDevice'有正確的註解,那麼它應該工作,如果ObjectMapper'不包含任何自定義(de)序列化器。 –
客戶端類添加...也許我使用不推薦使用的東西? – chile