Mar*_*itt 18 java spring spring-mvc jackson
我有一个Spring 3.1 MVC项目,我无法反序列化发送到以下控制器方法的请求:
@RequestMapping(value="/deposit",method=RequestMethod.POST)
public void deposit(@RequestBody DepositRequest request)
{
}
Run Code Online (Sandbox Code Playgroud)
包含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;
}
}
Run Code Online (Sandbox Code Playgroud)
和解串器:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,从不调用此反序列化程序.当我发送以下JSON时,我得到一个400 - Bad Request响应,我假设它表示未找到映射器.
{
"amount" : "30AUD"
}
Run Code Online (Sandbox Code Playgroud)
我是否需要以某种方式告诉Spring关于这个mapper,还是足够的注释?我应采取哪些其他步骤才能使反序列化工作?
您还可以将解串器/序列化程序附加到amount字段:
@JsonDeserialize(using=JodaMoneyDeserializer.class)
@JsonSerialize(using=JodaMoneySerializer.class)
private Money amount;
public Money getAmount() {
return amount;
}
public void setAmount(Money amount) {
this.amount = amount;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24419 次 |
| 最近记录: |