假设我有像端点那样返回JSON数据的REST,例如:来自我的Java Play应用程序中的模型。我发现了两种创建JSON输出的方法:
使用类似于HTML模板的JSON模板。它看起来像这样:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
我喜欢它的灵活性。我可以轻松地围绕数据(用于元数据,状态消息等)构建包装器。而且我可以轻松地影响哪些事情被传递(密码字段,上次登录的时间戳等等当然是你想要向客户展示的东西)。当然要求模板变量的内容应该正确转义才能获得有效的JSON。最好的方法是什么?
第二种方法是将模型的POJO直接序列化为JSON。当然,这更快,可以用更少的努力完成。与模板方法相比,它可能更可靠,因为它是一个自动过程。但是:如何排除密码和元数据字段等数据?我应该使用仅包含相关数据的jackson实现构造一个新的JSON对象吗?或者我是否必须为每个模型类创建一个“json-model”并将每个请求的真实模型转换为json模型,然后才能将其序列化?
就个人而言,我喜欢模板方法,因为它具有灵活性。但有些人会说,永远不要手工构建JSON,XML等。但在这种情况下,这真的是一个问题,你会推荐什么?
答案 0 :(得分:2)
假设您正在使用Java,Jackson允许您使用注释排除字段。请参阅:http://jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html