0
我在我的項目中使用了以下傑克遜映射器。無法通過Jackson正確地反序列化布爾值
org.codehaus.jackson jackson-mapper-asl 1.9.13
我的問題是,每當我嘗試將json字符串轉換爲對象時,我無法正確映射布爾值。這是一個非常奇怪的問題。 如果我的屬性名稱以「is」例如"isFlag":true
開頭,傑克遜沒有讀取它。如果將屬性名稱更改爲"Flag":true
,則會創建正確的對象。
參考JSON:
{"ticketNumber": "0970897760","chartPrepared": true,"isFlag": true}
引用類:
class TestClass {
String ticketNumber;
boolean chartPrepared;
boolean isFlag;
public boolean isChartPrepared() {
return chartPrepared;
}
public void setChartPrepared(boolean chartPrepared) {
this.chartPrepared = chartPrepared;
}
public boolean isFlag() {
return isFlag;
}
public void setFlag(boolean isFlag) {
this.isFlag = isFlag;
}
public String getTicketNumber() {
return ticketNumber;
}
public void setTicketNumber(String ticketNumber) {
this.ticketNumber = ticketNumber;
}
}
}
功能:
TestClass obj = mapper.readValue(text, TestClass.class);
System.out.println(obj.getTicketNumber()+" "+obj.isChartPrepared()+" "+obj.isFlag());
實際輸出:
0970897760 true false
期望輸出:
0970897760 true true
變化'isFlag' to'flag'在你的JSON,或你的方法'isFlag'到'isIsFlag' – BusyAnt
感謝您的答覆BusyAnt。我想出了一個更好的解決方案。明確地在TestClass中添加@JsonProperty(「isFlag)解決了這個問題。 @JsonProperty(「isFlag」) \t \t boolean isFlag; –