我正在开发 Google Cloud Endpoint Web 服务,在最终使身份验证正常工作后,生成的代码出现了一些问题。
我已经像这样构建了我的 ProtoRPC 消息,使用一个整数字段作为对象 id、client_id 和 high_water_mark。
class NoteMessage(messages.Message):
id = messages.IntegerField(1)
client_id = messages.IntegerField(2)
high_water_mark = messages.IntegerField(5)
...
这会生成包含字段@JsonString
属性的Java 源代码long
,但是当我从服务器获得响应时,会出现以下错误。
E/AndroidRuntime( 9231): java.lang.IllegalArgumentException: number type formatted as a JSON number cannot use @JsonString annotation [key id, field private java.lang.Long com.google.api.services.notes.model.NoteApiMessagesNoteMessage.id]
E/AndroidRuntime( 9231): at com.google.common.base.Preconditions.checkArgument(Preconditions.java:119)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:599)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parse(JsonParser.java:350)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:586)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parseArray(JsonParser.java:456)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:549)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parse(JsonParser.java:350)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:586)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonParser.parse(JsonParser.java:289)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:76)
E/AndroidRuntime( 9231): at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:71)
E/AndroidRuntime( 9231): at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:495)
E/AndroidRuntime( 9231): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:465)
E/AndroidRuntime( 9231): at com.ryanharter.hashnote.sync.SyncAdapter.syncNotes(SyncAdapter.java:187)
E/AndroidRuntime( 9231): at com.ryanharter.hashnote.sync.SyncAdapter.onPerformSync(SyncAdapter.java:110)
E/AndroidRuntime( 9231): at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:254)
我似乎找不到任何我实际上可以控制序列化或反序列化的地方,那么这应该如何与 Java 一起使用?