2017-04-19 271 views
1

請幫助我,當將json字符串強制轉換爲java用戶定義的對象時,出現異常。如何解決異常org.codehaus.jackson.map.exc.UnrecognizedPropertyException

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "acknowledgedby" (Class com.xchange.model.XchangeOutboundMessage), not marked as ignorable 
at [Source: [email protected]; line: 1, column: 34] (through reference chain: com.xchange.model.XchangeOutboundMessage["acknowledgedby"]) 

我還發現在這裏計算器許多鏈接,並將所有建議型號的領域@JsonIgnore註釋,但我不能忽略這一點。

public List getOutBoundMessageList(){ 
     List list=new ArrayList(); 
     ObjectMapper mapper = new ObjectMapper(); 
     XchangeOutboundMessage xchangeOutboundMessage=null; 
     String json1=null; 
     try { 

      cluster = Cluster.builder().addContactPoint(contactPoints).build(); 

      session = cluster.connect(keySpaceName); 

      cassandraOps = new CassandraTemplate(session); 
      String queryString="Select JSON * from XchangeOutboundMessage"; 
      ResultSet result = session.execute(queryString); 
      int i=0; 
      String json1=null; 
      for(Row row:result) { 
       json1 = row.getString(i); 
       xchangeOutboundMessage = mapper.readValue(json1, XchangeOutboundMessage.class); 
       list.add(xchangeOutboundMessage); 
       i++; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return list; 
    } 
} 

模型類字段和getter,setter方法,其中的例外發生的歷史

private String acknowledgedBy; 
public String getAcknowledgedBy() { 
     return acknowledgedBy; 
    } 
    public void setAcknowledgedBy(String acknowledgedBy) { 
     this.acknowledgedBy = acknowledgedBy; 
    } 
+1

假設您分享整個Model類以清楚地瞭解問題。 –

回答

0

你得到的異常,因爲千斤頂的映射區分大小寫。 默認情況下,cassandra使每個列名稱爲tolowercase。這就是爲什麼您的字段名稱(acknowledgedBy)和cassandra cassandra的列名稱(acknowledgeedby)不匹配。

您可以通過配置方法將jackson映射器設置爲匹配不區分大小寫的鍵。

mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);