我正在研究Google Cloud端點Web服務,並且在最終獲得身份驗證後,我在生成的代碼中遇到了一些問題。Cloud端點中的@JSONString註釋的非法參數異常生成的代碼
我已經構建了我的ProtoRPC消息,使用Integer字段作爲對象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)
...
這產生包括在long
領域@JsonString
屬性Java源代碼,但是當我從服務器的響應,我得到以下錯誤。
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的工作?
非常感謝@bossylobster,這正是我所需要的。我發現其他文章解釋了爲什麼會發生,我只是不知道如何解決它。非常感激! – rharter 2013-03-12 21:05:22
優秀的回覆 – 2013-06-24 05:04:21