Tôi có một dự án Spring 3.1 MVC, và tôi đang gặp rắc rối deserializing một yêu cầu gửi đến các phương pháp điều khiển sau:@JsonSerialize/@JsonDeserialize không gọi với Spring MVC
@RequestMapping(value="/deposit",method=RequestMethod.POST)
public void deposit(@RequestBody DepositRequest request)
{
}
Yêu cầu đối tượng, trong đó có một giá trị Joda tiền, mà tôi đã đăng ký một tùy chỉnh serializer/deserializer cho:
public class DepositRequest {
private Money amount;
@JsonDeserialize(using=JodaMoneyDeserializer.class)
@JsonSerialize(using=JodaMoneySerializer.class)
public Money getAmount() {
return amount;
}
public void setAmount(Money amount) {
this.amount = amount;
}
}
Và deserializer:
public class JodaMoneyDeserializer extends JsonDeserializer<Money> {
@Override
public Money deserialize(JsonParser parser, DeserializationContext context)
throws IOException, JsonProcessingException {
String text = parser.getText();
return Money.parse(text);
}
}
Tuy nhiên, deserializer này không bao giờ được gọi. Khi tôi gửi JSON sau, tôi nhận được phản hồi 400 - Bad Request
, mà tôi cho rằng người lập bản đồ không được tìm thấy.
{
"amount" : "30AUD"
}
Tôi có cần nói với Spring về trình ánh xạ này bằng cách nào đó hoặc chú thích đủ không? Tôi nên thực hiện các bước nào khác để làm cho quá trình deserialization hoạt động?
Bạn phải cấu hình lớp deserializer không? Tôi đang cố gắng tương tự với joda-time http://stackoverflow.com/q/9484869/106261 – NimChimpsky