我正在开发一个googlecloudendpointweb服务,在最终使auth生效之后,我对生成的代码有一些问题。在
我这样构建了ProtoRPC消息,使用一个整数字段表示对象id、client_id和high_water_标记。在
class NoteMessage(messages.Message):
id = messages.IntegerField(1)
client_id = messages.IntegerField(2)
high_water_mark = messages.IntegerField(5)
...
这将生成包含long
字段上的@JsonString
属性的Java源代码,但是当我从服务器获得响应时,我得到以下错误。在
我似乎找不到任何可以控制序列化或反序列化的地方,那么这应该如何与Java一起工作呢?在
如another post中所述,这是由
protorpc
库的一个奇怪之处引起的。Google的API客户端库希望int64
和uint64
字段是JSON中的字符串,因为Javascript本身只能处理(由于精度原因)小于等于2**53
的整数。在正如您在Google的“Discovery”API标准的type-format documentation中看到的,这就是这些类型的预期。但是,
protorpc
库与currently use的语义不同,我们仍在确定正确的处理方法。在所以,当你使用
您使用的是
^{pr2}$IntegerField
s的默认变量messages.Variant.INT64
。这反过来又使Java客户端库需要一个JSON字符串,比如当从
protorpc
返回的响应是作为应用程序的临时工作,请使用
或者,如果您的ID的大小需要超过32位,请使用:
后记:
当你在写的时候,我建议你看看Endpoints Proto Datastore API。我们已经对它的使用做了一些screencasts。在
要用
endpoints-proto-datastore
解决相同的问题,您需要导入和使用
为了你的财产。在
相关问题 更多 >
编程相关推荐