需要将JSON字符串转换为Java对象。
{ "amount":1.0000 }
我正在尝试使用GSON.fromjson(response,Amount.class)转换字符串;此值在对象中已更改为1.0请帮助解决此问题我在objectmapper中也尝试了同样的操作。它不起作用
ukqbszuj1#
考虑您的Amount类如下所示:
class Amount { private BigDecimal amount; public BigDecimal getAmount() { return amount; } }
ObjectMapper已正确解析它。
@Test void amountPrecisionTest() throws IOException { Amount amount = new ObjectMapper().readValue("{\"amount\":1.0000}", Amount.class); assertEquals(BigDecimal.valueOf(1.0000).setScale(4), amount.getAmount()); }
gg0vcinb2#
你应该写自定义seriliazer,像这样:
public class SerializerBigDecimal extends JsonSerializer<BigDecimal> { @Override public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException { if(Objects.isNull(value)) { gen.writeNull(); } else { // take the floor value gen.writeNumber(value.setScale(4, RoundingMode.FLOOR)); } } }
然后在POJO中的"amount"字段上添加注解:
"amount"
@JsonSerialize(using = SerializerBigDecimal.class) private BigDecimal amount;
2条答案
按热度按时间ukqbszuj1#
考虑您的Amount类如下所示:
ObjectMapper已正确解析它。
gg0vcinb2#
你应该写自定义seriliazer,像这样:
然后在POJO中的
"amount"
字段上添加注解: