나는 스프링 3.1 MVC 프로젝트를 가지고 있고, 나는 문제가 다음 컨트롤러 메소드로 전송 요청 deserialize하는 데 :@JsonSerialize/@JsonDeserialize 스프링 MVC를 호출하지
@RequestMapping(value="/deposit",method=RequestMethod.POST)
public void deposit(@RequestBody DepositRequest request)
{
}
요청 개체입니다 포함되어 있습니다
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);
}
}
나는에 대한 사용자 지정 시리얼 라이저/디시리얼라이저를 등록한 Joda 돈 값,
그러나이 디시리얼라이저는 절대로 호출되지 않습니다. 다음 JSON을 보낼 때 400 - Bad Request
응답을 얻습니다. 이는 매퍼가 발견되지 않았다고 가정합니다.
{
"amount" : "30AUD"
}
어떻게하면이 매퍼에 대해 스프링에게 알려야합니까, 아니면 주석이 충분합니까? 직렬화 해제 작업을 수행하기 위해 수행해야하는 다른 단계는 무엇입니까?
당신이뿐만 아니라 디시리얼라이저 클래스를 구성해야합니까? 나는 joda-time과 똑같은 시도를하고있다. http://stackoverflow.com/q/9484869/106261 – NimChimpsky