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 
+0

變化'isFlag' to'flag'在你的JSON,或你的方法'isFlag'到'isIsFlag' – BusyAnt

+1

感謝您的答覆BusyAnt。我想出了一個更好的解決方案。明確地在TestClass中添加@JsonProperty(「isFlag)解決了這個問題。 @JsonProperty(「isFlag」) \t \t boolean isFlag; –

回答

1

感謝您的答覆BusyAnt。我想出了一個更好的解決方案。顯式的增加在識別TestClass @JsonProperty(「isFlag)解決了這個問題。

@JsonProperty("isFlag") 
boolean isFlag; 
相關問題