2012-03-08 57 views
1

我是一個相對較新的Java,並想嘗試新的東西。目前我正在嘗試java框架遊戲。玩!/ Morphia - 返回MongoID作爲字符串(在JSON內)/ blobFieldsTracker字段

我想要做的是重寫一個小的REST JSON API在PHP中作爲播放休息服務。

我使用mongodb作爲數據存儲,因此我安裝了morphia。一切都按預期工作。但是對於renderJSON()產生的json結果我有點困惑。

這是我的模型的代碼:

@AutoTimestamp 
@Entity 
public class Bookmark extends Model { 
public String title; 
public String url; 
public String description; 
public List tags; 
public boolean is_private; 

public Bookmark(String title, 
       String url, 
       String description, 
       String tags, 
       boolean is_private) 
{ 
    this.title   = title; 
    this.url   = url; 
    this.description = description; 
    this.tags   = Arrays.asList(tags.split(" ")); 
    this.is_private  = is_private; 
} 
} 

要檢索我'使用控制器內的以下方法中的所有書籤:

public static void listAll() { 
     List<Bookmark> bookmarks = Bookmark.findAll(); 
     renderJSON(bookmarks); 
    } 

下面是結果的線:

[{"title":"Test","url":"http://www.google.de","description":"test","tags":["tag1","tag2","tag3","tag5","tag0209135913598"],"is_private":true,"_id":{"_time":1331202670,"_machine":-637116226,"_inc":989037616,"_new":false},"_created":1331202670469,"_modified":1331202670469,"blobFieldsTracker":{}}] 

現在我對「_id」 - 對象具有屬性「_time」,「_mach」有點困惑ine「等。而且我也對「blobFieldsTracker」感到困惑。

對於屬性「_id」,我會期待一個mongoid。我無法在文檔或谷歌中找到與此相關的任何內容,所以我的問題是我必須做的,以將「真正的」mongoid包含在json-string中。

回答

1

請使用下面的渲染聲明:

renderJSON(bookmarks, new play.modules.morphia.utils.ObjectIdGsonAdapter());

關於blobFieldsTracker,它增強你的模型類的看家領域嗎啡插件。現在,只需在javascript中忽略它。

+0

謝謝,那有效! – Marc 2012-03-09 11:15:10

+0

在最新版本中,您可以使用字符串類型ID:http://www.playframework.org/modules/morphia-1.2.8-RC1/model#id – 2012-06-15 08:23:01