1 回答
TA贡献1802条经验 获得超10个赞
由于您依赖于Spring bootthrough 注释和Jackson,因此自定义反序列化器将在这里完美运行。您必须创建反序列化器类,如下所示
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;
}
}
现在你必须指示你Jackson使用这个反序列化器而不是类的默认反序列化器Bill。这是通过注册 desearilizer 来完成的。可以通过Bill类上的简单注释来完成,例如@JsonDeserialize(using = BillDeserializer.class)
您的Bill课程通常如下所示
@JsonDeserialize(using = BillDeserializer.class)
public class Bill {
private String siteId;
private String billId;
//getters and setters
}
添加回答
举报