java - Play 2 : Best way to deliver JSON content

标签 java json rest playframework playframework-2.0

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

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

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

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

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

就我个人而言,我喜欢模板方法,因为它的灵 active 。但有些人会说,永远不要手动构建 JSON、XML 等。但这真的是一个问题吗?您会建议什么?

最佳答案

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

关于java - Play 2 : Best way to deliver JSON content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18013777/

相关文章:

spring - 对象的 REST Controller 类删除方法 responseType 为空

asp.net - 网络 API : Basic Authentication or HMAC over SSL?

java - 生成客户端 SOAP 时将 wsdl 日期类型转换为 XMLGregorianCalendar

c# - 使用 JSON.NET 访问 JSON 属性以创建 C# 字典

iphone - 如何在 Objective-C 中解析 HTML 响应?

Javascript递归导致循环结构

sql - SQL Azure 上超时已过期;无法在本地 SQL Server 上重现

java - 从数组中提取信息

java - spring security : NoSuchBeanDefinitionException: No qualifying bean of type [org. springframework.security.config.annotation.ObjectPostProcessor] 找到

java - @ElementCollection 至少包含一个元素,最多包含 N 个元素