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

时间:2015-07-16 19:11:11

标签: javascript java json long-integer postman

使用Play Framework。

控制器

@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检查响应。在标签&#34; Raw&#34;我得到了:

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

在选项卡上&#34;漂亮&#34;:

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

为什么uuid被舍入了?

1 个答案:

答案 0 :(得分:2)

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

using UnityEngine;
using System.Collections;

public class MouseClick : MonoBehaviour
{
    void OnMouseDown()
    {
        Debug.Log ("Clicked the Collider!");
    }
}

这将打印 - 3942015886343227000

因为JavaScript中的数量限制。

如果是UUID,最好使用String。