gpt4 book ai didi

java - 谷歌云端点返回 java long 作为 JSON 中的字符串

转载 作者:搜寻专家 更新时间:2023-11-01 02:22:48 25 4
gpt4 key购买 nike

我正在使用 google app engine 最新版本 1.9.30 并且我定义我的云端点如下

@Api(name="app", version="v1", transformers={EndpointDateTransformer.class})
public class MyEndpoints {

@ApiMethod(name="dummy", path="dummy", httpMethod=HttpMethod.GET)
public Map<String, Object> dummy(){
Map<String, Object> dummy = Maps.newHashMap();
dummy.put("date", DateUtil.getCurrentTimestamp());
dummy.put("number", 5L);
return dummy;
}

}

此处 EndpointDateTransformer 将 Date 转换为 Long 值,端点的 JSON 响应为

{
"number": "5",
"date": "1452751174672"
}

但是如果我将 5L 更改为 5,那么我会看到 JSON 响应为

{
"number": 5,
"date": "1452751174672"
}

为什么云端点将 Long 值转换为 JSON 中的字符串。当我使用旧的应用程序引擎版本 1.9.19 时,它曾经工作过。 Long 在 JSON 上也呈现为 long。我在这里遗漏了什么吗?

最佳答案

JSON 是 JavaScript Object Notation,它实际上是一个有效的 Javascript。所以它应该遵循 javascript 标准。

Javascript 的 Number 是 54 位数字,从 -(2^53 - 1)(2^53 - 1)。但是Java的long是64位的数,从-2^632^63-1

看区别:

Java Long Max         = 9223372036854775807
Javascript Number Max = 9007199254740992

您根本无法将 Java Long 转换为 Javascript Number,因为它不适用于所有值。因此改为使用字符串表示。

您有两种可能的解决方案:

或者,如果您确实需要 Date,最好将其格式化为 UTC 时区内的 yyyy-MM-dd\'T\'HH:mm:ss。它与 Javascript 日期格式兼容。

规范:

关于java - 谷歌云端点返回 java long 作为 JSON 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34783049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com