jax rs数据转换

时间:2014-10-01 15:55:39

标签: java json jackson jax-rs

我必须从服务中返回DTO,如下所示:

ResponseDTO
{
  Long id;
  String name;
  //getter and setter etc.
}

服务以json格式返回响应,我使用org.codehaus.jackson.jaxrs.JacksonJsonProvider进行转换,但在客户端获得响应时,id值会自动更改。

例如: - 从服务方面我将id的值设置为Long.MAX_VALUE但客户端json响应显示值" 9223372036854776000"这不是我从服务中发送的价值。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

问题是Javascript将所有Number处理为64位IEEE 754浮点数。这些不能完全代表9223372036854775807Long.MAX_VALUE的值)。

这就是Feature.WRITE_NUMBERS_AS_STRINGS存在的原因。您需要启用此功能才能接收实际号码。请注意,将其转换为Number仍会导致9223372036854776000(向上舍入)。有关Javascript中舍入的工作原理,请参阅this answer