Play!/ Morphia - 将MongoID作为字符串(在json中)/ blobFieldsTracker字段返回

时间:2012-03-08 15:30:50

标签: java playframework mongoid

我是一个相对较新的java,想要尝试新的东西。目前我正在尝试java框架游戏。

我想要做的是重写一个用PHP编写的REST JSON Api作为播放休息服务。

我使用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”,“_ machine”等属性的对象感到有些困惑。我也对“blobFieldsTracker”感到困惑。

对于属性“_id”,我希望有一个mongoid。我在文档中或谷歌中找不到与此相关的任何内容所以我的问题是我必须要做的是在json-string中包含“真正的”mongoid。

1 个答案:

答案 0 :(得分:1)

请使用以下呈现声明:

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

关于blobFieldsTracker,它是一个增强到您的模型类的管家字段morphia插件。现在,只需在你的javascript中忽略它。