我有一个反序列化服务器响应的类:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Card {
double amount;
String cardType;
String cardNumber
... many more properties
}
API并不是非常一致,因此对于有问题的请求,我得到了一个字符串"$74.50"
,该字符串显然无法解析为原样的两倍。我无法修改该类,因为它可能会使实际两倍的其他地方失败。
我可以让杰克逊在不修改类的情况下直接获取字符串吗?我想可以使用ObjectMapper
上的自定义解串器(例如here)来做到这一点,但不确定如何准确地将其解压缩。
答案 0 :(得分:1)
为amount
创建其他设置器:
@JsonSetter("amount")
public void setAmount(String sAmount) {
// parse "$74.50" to 74.50 here
this.amount = parsedAmount;
}
将在类中调用{"amount": "$74.50"}
之类的字段并更正amount
集。