【问题标题】:using Gson library in GWT client code在 GWT 客户端代码中使用 Gson 库
【发布时间】:2010-02-06 16:15:39
【问题描述】:

我目前正在使用 Eclipse 中的 GWT 2.0 在 java 中编写一个 Web 应用程序。 我想知道是否有办法在 GWT 应用程序的客户端代码中使用Gson library

如果有办法 - 请告诉我如何...

谢谢!

【问题讨论】:

  • 这可能不是您正在寻找的解决方案,但我发现使用 JavaScript 覆盖类型来轻松处理 JSON 对象是最好的 - 有关更多信息,请参见此处:googlewebtoolkit.blogspot.com/2008/08/…(然后您可以在服务器端使用 Gson,在客户端使用 JSO - 这不是完美的解决方案,但比通过标准 GWT 方法的“手动”解析更好)。
  • 问题是——在我看来,编写覆盖类型与手动解析 JSON 对象的工作量相同。我已经编写了类(从 wsdl 生成),我正在尝试以 json 格式对该 wsdl 执行 HTTP 请求并将响应加载到我的对象。您知道这样做的最佳方法是什么吗?

标签: java gwt gson


【解决方案1】:

Gson 使用 GWT 中不支持的 Java 功能,例如反射。因此无法在 GWT 客户端代码中使用 Gson。

【讨论】:

  • 所以我应该只在后端(服务器)端使用 GSON?
  • 没错。在客户端,最简单的方法是将 json 转换为对象是使用覆盖类型。
  • 太糟糕了,他们没有从后端的 GSON 对象生成“覆盖”类的选项。这将改善情况。
【解决方案2】:

不完全是你写的,但我猜你的意思是如何在 GWT 代码中序列化/反序列化 JSON?

在 GWT 2.1.1 中,您可以使用 GWT AutoBean framework

在文章底部看到它有这个神奇的代码......

String serializeToJson(Person person) 
{
    // Retrieve the AutoBean controller
    AutoBean<Person> bean = AutoBeanUtils.getAutoBean(person);
    return AutoBeanCodex.encode(bean).getPayload();
}

Person deserializeFromJson(String json) 
{     
    AutoBean<Person> bean = AutoBeanCodex.decode(myFactory, Person.class, json);     
    return bean.as();   
} 

即使使用继承 Person 的实例,serializeToJson() 对我来说也很好,但我没有尝试 deserializeFromJson...

【讨论】:

    【解决方案3】:

    (如果您愿意,请随时改进我的帖子)

    目前 (2015-02-07) 虽然我非常喜欢 Gson 并且希望只有一个共享代码解决方案 :-/ 是不可能的,但是还有一些其他库可用(我只知道 AutoBeans 和 Gson我自己并快速浏览了 Piriti):

    (有些支持XML和JSON(反)序列化中的一种或两种)

    (*) 来自 GWT 项目本身

    比较:

    【讨论】:

      【解决方案4】:

      在我们的 GWT 项目中,我们使用 piritihttp://code.google.com/p/piriti/

      像魅力一样工作:-)

      【讨论】:

        【解决方案5】:

        我写了一个库,允许使用 GWT 和 Gson,你可以下载 here 并享受它。

        【讨论】:

        • 您只需将数据发送到服务器以将其转换/转换为 gson
        • 你说得对,这就是为什么我要弃用它
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-12
        • 1970-01-01
        • 1970-01-01
        • 2011-03-30
        相关资源
        最近更新 更多