Springboot将String转换为JavaMoney

时间:2018-05-06 23:30:50

标签: spring-boot java-money

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

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

如何配置我的springboot在java money字段中转换它? 这是我的对象

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

2 个答案:

答案 0 :(得分:0)

由于您已经要求进行Spring启动,并且似乎是如何在MVC中进行映射时自动转换,因此您正在寻找与@InitBinder结合的@ControllerAdvice

本S.O文章What is the purpose of init binder in spring MVC中使用了一个例子。

编写一个biding方法,根据需要将字符串转换为金钱或任何其他对象。

答案 1 :(得分:0)

使用jackson自定义反序列化器

@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());
    }
}