1 回答

TA貢獻(xiàn)1802條經(jīng)驗 獲得超10個贊
由于您依賴于Spring bootthrough 注釋和Jackson,因此自定義反序列化器將在這里完美運行。您必須創(chuàng)建反序列化器類,如下所示
public class BillDeserializer extends StdDeserializer<Bill> {
public BillDeserializer() {
this(null);
}
public BillDeserializer(Class<?> vc) {
super(vc);
}
@Override
public Bill deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode billNode = jp.getCodec().readTree(jp);
Bill bill = new Bill();
bill.setSiteId(billNode.get("bill").get("siteId").textValue());
bill.setBillId(billNode.get("bill").get("billId").textValue());
return bill;
}
}
現(xiàn)在你必須指示你Jackson使用這個反序列化器而不是類的默認(rèn)反序列化器Bill。這是通過注冊 desearilizer 來完成的??梢酝ㄟ^Bill類上的簡單注釋來完成,例如@JsonDeserialize(using = BillDeserializer.class)
您的Bill課程通常如下所示
@JsonDeserialize(using = BillDeserializer.class)
public class Bill {
private String siteId;
private String billId;
//getters and setters
}
添加回答
舉報