2013-02-21 143 views
2

我試圖將對象發送到包含密鑰的Google App Engine端點。但是該對象不能被反序列化。這是我得到的錯誤:發送密鑰到App Engine端點

java.io.IOException:  com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: 
(was java.lang.NullPointerException) 
(through reference chain: 
Form["identity"]->FormsIdentity["user"]->User["key"]->com.google.appengine.api.datastore.Key["appId"]) 

這是將對象IM發送:

"identity":{ 
    "user": 
    { 
     "key" : { 
       "kind" : "User", 
       "appId" : "no_app_id", 
       "id" : "1", 
       "complete" : true, 
       "namespace" : "" 
      }, 
     "googleID" : "8493582", 
     "emailAddress" : "[email protected]", 
     "credential" : "[email protected]" 
    }, 
    "deviceID":"4234o34i523534" 
} 

但我只是在收到錯誤的前端,因爲執行端點中的代碼。

回答

0

當密鑰序列化到JSON,它會嘗試從Key.class

public String getAppId() { 
    return appIdNamespace.getAppId(); 
    } 

調用getAppId()正如你可以看到這個吸氣試圖訪問appIdnamespace,而你的情況可能是零。 appId名稱空間不能被顯式設置,但是當您使用KeyFactory創建密鑰時,或者在數據存儲持久保存該對象後生成。

由於您沒有發佈返回此身份對象的方法的代碼,我不確定您的用戶密鑰爲什麼沒有設置appIdnamespace,但我的猜測是您沒有返回對象持續存在或密鑰未正確創建。