2012-03-08 25 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