0

私のプロジェクトでは、次のジャックソンマッパーを使用しています。ジャンクションからブール値を正しく逆シリアル化できない

org.codehaus.jackson jackson-mapper-asl 1.9.13 

json文字列をオブジェクトに変換しようとすると、ブール値を正しくマップできないという問題があります。それは非常に特異な問題です。 私の属性名がで始まる場合は "、例えば"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 

予想される出力:返信BusyAntため

0970897760 true true 
+0

変更 'isFlag'のあなたのJSONでto'flag'、またはあなたのメソッド' isFlag'をisIsFlag' 'への返信BusyAntため – BusyAnt

+1

感謝を。明示的に@JsonProperty( "isFlag")をTestClassに追加することでこの問題が解決されました。 @JsonProperty( "isFlag") \t \t boolean isFlag; –

答えて

1

感謝。私はより良い解決策を見つけました。明示的にTestClassをして@JsonProperty(「isFlag)を追加すると、この問題を解決しました。

@JsonProperty("isFlag") 
boolean isFlag; 
関連する問題