6
REST服務與傑克遜JSON解析與unwraping根,但沒有設置@JsonRootName
<transaction><trxNumber>1243654</trxNumber><type>INVOICE</type></transaction>
或JSON響應能力:
{"transaction":{"trxNumber":1243654,"type":"INVOICE"}}
有沒有問題,當我使用:
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true)
而作爲結果類
@JsonRootName("transaction")
public class Transaction {
private String trxNumber;
private String type;
//getters and setters
}
但實際上我應該使用來自第三方jar的Transaction類,它與上面的完全一樣,但沒有@JsonRootName(「transaction」)註釋。
所以我最終
Could not read JSON: Root name 'transaction' does not match expected ('Transaction') for type...
有沒有辦法迫使傑克遜解析到交易類不添加任何東西到交易類本身(因爲我得到這個文件作爲二進制罐子的一部分) ?
我試過自定義PropertyNamingStrategy,但它似乎必須做與字段和getter/setter名稱,但不是類名稱。
Java7,Jackson 2.0.5。
有什麼建議嗎?謝謝。
太棒了!非常感謝你的答案。最後,我們決定使用TransactionWrapper對象並將@JsonRootName(「transaction」)放在其Transaction字段中,但您的建議看起來非常有趣! –
'TransactionWrapper'聽起來不錯。我也想過。無論如何,您可以重新使用mixin功能來解決未來的其他問題。 –