【问题标题】:jax rs data conversionjax rs 数据转换
【发布时间】:2014-10-01 15:55:38
【问题描述】:

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

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

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

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

我错过了什么吗?

【问题讨论】:

  • 所以澄清一下,您设置ResponseDTO.id = 9223372036854775807 并接收{ "id": "922337203685477000", ... }?出于多种原因,这似乎是错误的。
  • 是的,这似乎是错误的,但正在发生。

标签: java json jackson jax-rs


【解决方案1】:

问题是 Javascript 将所有 Numbers 处理为 64 位 IEEE 754 浮点数。这些不能准确地表示9223372036854775807Long.MAX_VALUE 的值)。

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

【讨论】:

    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多