javascript - 如何避免在客户端舍入长值?

标签 javascript java json long-integer postman

使用 Play 框架。

Controller

@BodyParser.Of(BodyParser.Json.class)
public static Result getResponseJson(Long id){
    List<DataField> entities = new Model.Finder<>(Long.class, DataField.class)
      .where("response_id = " + id).findList();
    Response response = new Response(entities, id);
    return ok(toJson(response));
}

Response 实体是:

public class Response {
  private Long uuid;
  private Map<TableField, String> map = new HashMap<>();
  ...constructors, getters and setters...
}

我用 POSTMAN 检查响应。在“原始”选项卡上,我得到了:

{"uuid":3942015886343226874,"map":{"Work":"Contract","locale":"Mogilev"}}

在“漂亮”选项卡上:

{
  "uuid": 3942015886343227000,
  "map": {
    "Work": "Contract",
    "locale": "Mogilev"
  }
}

为什么uuid会四舍五入?

最佳答案

这与 Playframework 无关,这是一个浏览器问题。在您的浏览器中打开开发人员控制台并尝试这个 -

var c = 3942015886343226874;
console.log(c);

这将打印 - 3942015886343227000

因为 JavaScript 中的数量限制。

如果是 UUID,最好使用 String。

关于javascript - 如何避免在客户端舍入长值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462595/

相关文章:

javascript - Angularjs:从 json 对象创建一个键数组

javascript - 设置函数变量与使用对象字面量相同吗

php - 使用php将Mysql日期转换为JSON中的毫秒

带有 Pyramid 对象参数的 jQuery.load() 导致 "No JSON object could be decoded"

javascript - 谷歌图表注释未显示

javascript - 在 JavaScript 中批量删除 URL 中的查询字符串

javascript - chop 对象数组中的文本?

java - MyEclipse 无法识别包

java - 静态引用变量的行为

java - 通过引用调用的行为不符合预期