Play2:提供JSON内容的最佳方式

时间:2013-08-02 09:46:08

标签: java json rest playframework playframework-2.0

假设我有像端点那样返回JSON数据的REST,例如:来自我的Java Play应用程序中的模型。我发现了两种创建JSON输出的方法:

  1. 使用类似于HTML模板的JSON模板。它看起来像这样:

    {
      "name": "${user.name}",
      "id": "${user.id}",
      . . . 
    }
    

    我喜欢它的灵活性。我可以轻松地围绕数据(用于元数据,状态消息等)构建包装器。而且我可以轻松地影响哪些事情被传递(密码字段,上次登录的时间戳等等当然是你想要向客户展示的东西)。当然要求模板变量的内容应该正确转义才能获得有效的JSON。最好的方法是什么?

  2. 第二种方法是将模型的POJO直接序列化为JSON。当然,这更快,可以用更少的努力完成。与模板方法相比,它可能更可靠,因为它是一个自动过程。但是:如何排除密码和元数据字段等数据?我应该使用仅包含相关数据的jackson实现构造一个新的JSON对象吗?或者我是否必须为每个模型类创建一个“json-model”并将每个请求的真实模型转换为json模型,然后才能将其序列化?

  3. 就个人而言,我喜欢模板方法,因为它具有灵活性。但有些人会说,永远不要手工构建JSON,XML等。但在这种情况下,这真的是一个问题,你会推荐什么?

1 个答案:

答案 0 :(得分:2)

假设您正在使用Java,Jackson允许您使用注释排除字段。请参阅:http://jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html