我已經建立了一個帶有端點的本地appengine。使用curl我成功地測試endponts這樣的:使用谷歌雲端點JS api的反序列化錯誤客戶端
C:\Program Files>curl.exe --header "Content-Type: application/json" -X POST -d "{g:\"test\",u:1,l:{x:1,y:1}}" http://localhost:8888/_ah/api/myapp/v1/move
我得到的是預期的響應:
{
"g" : "test",
"u" : 1,
"l" : {
"x" : 1,
"y" : 1
}
}
當我去我的JS客戶端,並嘗試做同樣的,奇怪的事情開始發生。顯然,從Javascript調用端點時,嵌套元素「l」無法反序列化。我不知道這是爲什麼?
這是錯誤消息我在控制檯中看到:
調用我的終點500 (Can not deserialize instance of java.lang.String out of START_OBJECT token at [Source: N/A; line: -1, column: -1])
這是我的JS功能。
function init() {
var myapp = 'http://localhost:8888/_ah/api';
gapi.client.load('myapp', 'v1', function() {
var payload = {g:"Test",u:0,l:{x:4,y:4}};
gapi.client.myapp.unit.move(payload).execute(function(resp) {
console.log(resp);
});
}, myapp);
}
發送到服務器的負荷是:
[{"jsonrpc":"2.0","id":"gapiRpc","method":"myapp.unit.move","params":{"g":"Test","u":0,"l":{"x":4,"y":4}},"apiVersion":"v1"}]
當我從有效載荷我的端點被稱爲就好刪除l:{x:4,y:4}
。
似乎我做錯了什麼,但什麼?
參見 Owned entity causing json serialization error in Google javascript api client