当前位置: 首页 > 面试题库 >

如何使用GSon公开方法?

宋望
2023-03-14
问题内容

使用Play Framework,我通过GSON序列化了模型。我指定哪些字段是公开的,哪些不是。

这很好用,但我也想使用@expose方法。当然,这太简单了。

我该怎么做 ?

谢谢你的帮助 !

public class Account extends Model {
    @Expose
    public String username;

    @Expose
    public String email;

    public String password;

    @Expose // Of course, this don't work
    public String getEncodedPassword() {
        // ...
    }
}

问题答案:

我遇到的最好的解决方案是制作一个专用的序列化器:

public class AccountSerializer implements JsonSerializer<Account> {

    @Override
    public JsonElement serialize(Account account, Type type, JsonSerializationContext context) {
        JsonObject root = new JsonObject();
        root.addProperty("id", account.id);
        root.addProperty("email", account.email);
        root.addProperty("encodedPassword", account.getEncodedPassword());

        return root;
    }

}

并在我看来像这样使用它:

GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(Account.class, new AccountSerializer());
Gson parser = gson.create();
renderJSON(parser.toJson(json));

但是@Expose为某个方法工作会很棒:它将避免使序列化器仅用于显示方法!



 类似资料:
  • 我想限制我的REST方法,这样用户就可以只使用GET和POST。但是,@RepositoryRestResource提供了包括DELETE和PUT在内的所有方法的说明。所以我只是想知道如何限制它? @RestController允许编写我们自己的方法,但是有很多相关的样板文件。 我一直在查看文档和github spring项目中的相关信息,但是没有找到任何相关信息。 有什么建议/帮助吗?谢谢大家!

  • 当JSON字符串{“a”:1}被反序列化时,数字100应该添加到值1中。在jsonb中,这是通过setter方法实现的,但Gson忽略了setter方法。如何让Gson使用setter方法?或者,如果这不可能,2022年,Gson中的setter推荐的替代方案是什么?

  • 问题内容: 我有一个代表IFrame的原型。该原型具有一个名为GoToUrl(…)的函数,可在IFrame中打开给定的url。 我的问题是:如何创建“ InternalDOM”属性并使该属性引用内部IFrame的“窗口”对象(根DOM对象)?通过以下方式:如果我的IFrame公开了一个在其“窗口”对象中包含对象X的页面,我可以这样做: 任何帮助,将不胜感激。 PS:我会接受不一定与jQuery相关

  • 我创建了一个docker镜像(java Web应用程序),创建了一个包含1个主节点和1个工作节点的kubernetes集群,创建了一个部署和一个服务。所有的资源似乎都运行良好,因为我已经通过“kubectl描述资源资源名”进行了检查。最后,我使用了入口来公开集群之外的服务。入口资源似乎工作正常,因为在描述入口对象时没有错误。但是,在从另一台机器访问浏览器上的主机时,我得到了“您的连接不是私有的”错

  • 问题内容: 所以我有3个端口应该暴露在机器的接口中。使用Docker容器可以做到这一点吗? 问题答案: 要只暴露一个端口,这是您需要做的: 要公开多个端口,只需提供多个参数:

  • 问题内容: 的文档:https : //github.com/bvaughn/react- virtualized/blob/master/docs/WindowScroller.md#updateposition 但是我签出了源代码:https : //github.com/bvaughn/react- virtualized/blob/master/source/WindowScroller/