【问题标题】:JSON to POJO and vise-versa for GWTJSON 到 POJO 和 GWT 反之亦然
【发布时间】:2015-03-24 19:57:13
【问题描述】:

我的应用程序使用通用的模型集成为多个应用程序的依赖项。其中一个依赖于 Models 的应用程序通过 Restlet 建立了 Restlet 连接:

ClientResource res = new ClientResource("/path");
            res.setOnResponse(new Uniform() {
                @Override
                public void handle(Request request, Response response) {
                    try {
                        if(!response.getStatus().isError()){
                           String body = response.getEntity().getText();
                          // do stuff with Response JSON
                        } else {

                        }
                    } catch (IOException e) {
                       // handle error
                    }
                }
            });
res.post(new JsonRepresentation(MediaType.APPLICATION_JSON, jsonObject));

我有两个问题,

  1. 有没有一种直接的方法可以将 POJO 编组到 GWT 中的 com.google.gwt.json.client.JSONObject 以与上述 res.post 一起使用
  2. 是否有一种直接的方法可以使用 GWT 将 JSON 字符串编组为 POJO?

这既适用于上面的ClientResource,也适用于不使用 GWT 覆盖类型,因为我们已经在客户端和服务器端共享了一个模型。简单明了的东西。

【问题讨论】:

    标签: java gwt restlet


    【解决方案1】:

    开箱即用的 Restlet 不支持 bean/JSON 转换。如果你想在 Restlet 中使用 bean,你应该使用本机 GWT 协议。它是选择 Restlet 进行 GWT 实施的指南。您可以在 Restlet 中启用内容类型,然后通过内容协商选择您想要的内容类型(GWT RPC 用于 GWT 客户端,JSON 用于其他客户端)。

    也就是说,我理解你的做法。在 GWT RPC 的情况下,Restlet 利用生成器功能直接处理 bean(请参阅此类 https://github.com/restlet/restlet-framework-java/blob/master/modules/org.restlet/src/org/restlet/rebind/ClientProxyGenerator.java.gwt)。生成器仅支持 GWT RPC 的媒体类型,但可以扩展为处理其他媒体类型,如 JSON。请注意,这种方法比Ümit 在其答案中提供的方法更狡猾。

    希望它能给你一些提示来解决你的问题, 蒂埃里

    【讨论】:

      【解决方案2】:
      1. AFAIK 没有自动化且简单的方法可以将 POJO 转换为 JSONObjects。很可能您必须手动完成。但是,JsonRepresentation 构造函数接受 JSON 字符串,因此您可以使用其中的一种(参见第 2 点)
      2. 有几种更简单的方法可以将 POJO 转换为 JSON:

      我想如果你有常见的 POJO,最简单的解决方案是使用AutoBeans。您将为每个 POJO 定义一个包含所有 setter 和 getter 的接口,并让 POJO 实现这些接口。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-28
        • 2015-11-18
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        相关资源
        最近更新 更多