在appspot.com上解析64位int,然后在localhost上解析?

时间:2014-06-26 23:43:13

标签: google-app-engine go

当您尝试在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。

1 个答案:

答案 0 :(得分:2)

我的localhost运行在64位环境中,appspot.com运行在32位环境中。然后所有数字都在2147483647解析好了,但是虽然定义为int64,但是id 5838406743490560要大到适合32位,因此它会在appspot.com实例上被解析为字符串。