当您尝试在JavaScript(parseInt("5838406743490560")
)中解析64位整数时,它可以在localhost服务器上运行,但不能在Appspot.com服务器上运行。在appspot.com服务器上,您需要将其解析为字符串而不是int64
。有谁知道为什么会这样?
在localhost上我可以这样做:
type Entity struct {
List []*Message `json:"list"`
}
type Message struct {
Id int64 `json:"id" datastore:"-"`
}
将其上传到appspot.com后,我需要将其解析为字符串,否则我会收到以下错误消息。
type Entity struct {
List []*Message `json:"list"`
}
type Message struct {
Id int64 `json:"id,string" datastore:"-"`
}
发送到id=parseInt("5838406743490560")
:
[{"jsonrpc":"2.0","id":"gapiRpc","method":"service.datastore.delete","apiVersion":"v0","params":{"list":[{"id":5838406743490560}]}}]
在Appspot.com上,我无法使用json:"id" datastore:"-"
解组。
在localhost上它完美无缺。
仅限Appspot.com上的错误:
[
{
"error": {
"code": 400,
"message": "json: cannot unmarshal string into Go value of type int64",
"data": [
{
"domain": "global",
"reason": "badRequest",
"message": "json: cannot unmarshal string into Go value of type int64"
}
]
},
"id": "gapiRpc"
}
]
我使用的是SDK v1.9.6。
答案 0 :(得分:2)
我的localhost运行在64位环境中,appspot.com运行在32位环境中。然后所有数字都在2147483647解析好了,但是虽然定义为int64,但是id 5838406743490560要大到适合32位,因此它会在appspot.com实例上被解析为字符串。