将renderJSON与play框架一起使用时排除datamember

时间:2011-10-30 16:20:38

标签: java json playframework gson

我需要用JSON渲染对象并将它们发送到客户端,但出于显而易见的原因我需要排除电子邮件和密码等字段。

我知道Play使用GSON(谷歌?),你可以在调用renderJSON()方法时传递一个序列化器类。但是我使用容器类一次呈现不同类型的类:

public class JSONContainer {

    public List<User> userList;

    public List<Toy> toyList;

}

对于每个类,可以使Serializer类实现GSON的JsonSerializer<...>方法。但是,如果我像这样渲染一个JSONContainer对象:renderJSON(container)如何将序列化程序类传递给渲染方法?

或者是否有更简单/更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

看看this post,它提供了几个选项。

似乎最好的选项是@Expose(com.google.gson.annotations.Expose)注释来标记要由Gson序列化的字段。然后,您需要使用GsonBuilder专门只包含@Expose字段。

或者,正如您在帖子中提到的,您可以自己构建序列化。如果查看this post,它会显示如何针对GsonBuilder注册特定的类类型,因此作为序列化的一部分找到的任何对象都将使用您的特定序列化器。

相关问题