我需要在JSON中呈现对象并将其发送到客户端,但出于明显的原因,我需要排除电子邮件和密码等字段。
我知道play使用GSON(由google?),你可以在调用renderJSON()方法时传递一个序列化器类。然而,我使用一个容器类一次呈现不同类型的类:
public class JSONContainer {
public List<User> userList;
public List<Toy> toyList;
}
对于每个类,都可以创建一个Serializer类来实现GSON的JsonSerializer<...>
方法。但是如果我像这样渲染一个JSONContainer对象:renderJSON(container)
我怎么能把序列化器类传递给渲染方法?
或者是否有更简单/更好的方法来做到这一点?
看看这篇文章,它给了你几个选择。
看来,最好的选择是@Expose (com.google.gson.annotations.Expose
)注释来标记您想要由Gson序列化的字段。然后你需要使用GsonBuilder来明确地只包含@Expose字段。
或者,正如你在你的文章中提到的,你可以简单地自己构建你的序列化。如果你看这篇文章,它显示了特定的类类型是如何在GsonBuilder上注册的,所以任何作为序列化的一部分发现的对象都将使用你特定的序列化器。