0

我有一个客户像这样发布到我的服务货币中:

{
"id": 1,
"amount": "12.323,44"
}

如何配置我的 springboot 以将其转换为 java 货币字段?这是我的对象

public class MyObject {
  private Long id;
  private Money amount;
}
4

2 回答 2

0

由于您要求使用 spring boot,并且似乎是如何在 MVC 中映射时自动转换,因此您正在寻找@InitBinder加上@ControllerAdvice.

在这篇 SO 文章中使用了一个示例What is the purpose of init binder in spring MVC

编写一个投标方法,将字符串转换为金钱或任何其他你想要的对象。

于 2018-05-07T04:15:46.283 回答
0

使用杰克逊自定义反序列化器

@JsonComponent
publi class MoneyJsonDeserializer 
  extends JsonDeserializer<Money> {

    @Override
    public Money deserialize(JsonParser jsonParser, 
      DeserializationContext deserializationContext)
      throws IOException, JsonProcessingException {

        TreeNode treeNode = jsonParser.getCodec().readTree(jsonParser);
        TextNode amountNode = (TextNode) treeNode.get(
          "amount");
        return new Money(amountNode.asText());
    }
}
于 2018-05-07T08:21:16.900 回答