У меня есть проект Spring 3.1 MVC, и у меня возникли проблемы с десериализацией запроса, отправленного следующему методу контроллера:
@RequestMapping(value="/deposit",method=RequestMethod.POST)
public void deposit(@RequestBody DepositRequest request)
{
}
Объект запроса, содержащий значение Joda Money, которое я зарегистрировал пользовательский сериализатор / десериализатор для:
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;
}
}
И десериализатор:
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);
}
}
Однако этот десериализатор никогда не вызывается. Когда я отправляю следующий JSON, я получаю ответ 400 - Bad Request
, который, как я полагаю, указывает на то, что сопоставитель не был найден.
{
"amount" : "30AUD"
}
Нужно ли мне как-то рассказывать Spring об этом картографе или достаточно аннотации? Какие еще шаги мне нужно предпринять, чтобы десериализация заработала?