1

假设我有类似 REST 的端点,它们返回 JSON 数据,例如来自我的 Java Play 应用程序中的模型。我找到了两种创建 JSON 输出的方法:

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

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

    我喜欢它的地方在于它的灵活性。我可以轻松地围绕数据(用于元数据、状态消息等)构建一个包装器。而且我可以轻松影响交付的内容(密码字段、上次登录的时间戳等内容当然不是您想向客户显示的内容)。一个要求当然是模板变量的内容应该正确转义以获得有效的 JSON。做这个的最好方式是什么?

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

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

4

1 回答 1

2

假设您使用的是 Java,Jackson 允许您使用注释排除字段。见:http: //jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html

于 2013-08-02T09:51:31.713 回答