Java 在GWT客户端代码中使用Gson库

Java 在GWT客户端代码中使用Gson库,java,gwt,gson,Java,Gwt,Gson,我目前正在使用eclipse中的GWT2.0用java编写一个web应用程序。 我想知道是否有一种方法可以在GWT应用程序的客户机代码中使用 如果有办法,请告诉我如何 谢谢 Gson使用了GWT中不支持的Java特性,如反射。因此,不可能在GWT客户端代码中使用Gson。不完全是您编写的,但我猜您的意思是如何在GWT代码中序列化/反序列化JSON 在GWT2.1.1中,您可以使用 在文章的底部,它有一个神奇的代码 String serializeToJson(Person person) {

我目前正在使用eclipse中的GWT2.0用java编写一个web应用程序。 我想知道是否有一种方法可以在GWT应用程序的客户机代码中使用

如果有办法,请告诉我如何


谢谢

Gson使用了GWT中不支持的Java特性,如反射。因此,不可能在GWT客户端代码中使用Gson。

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

在GWT2.1.1中,您可以使用

在文章的底部,它有一个神奇的代码

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();   
} 
String序列化为JSON(Person)
{
//检索AutoBean控制器
AutoBean bean=AutoBeanUtils.getAutoBean(person);
返回AutoBeanCodex.encode(bean.getPayload();
}
Person反序列化FromJSON(字符串json)
{     
autobeanbean=AutoBeanCodex.decode(myFactory,Person.class,json);
返回bean.as();
} 

serializeToJson()对我来说很好,即使使用的实例是inherit Person,但我没有尝试反序列化FromJSON…

在我们的GWT项目中,我们使用的是piriti


工作起来很有魅力:-)

我已经编写了一个库,可以将GWT与Gson一起使用,您可以下载并享受它。

(如果您愿意,请随意增强我的帖子)

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

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

  • 客户端和服务器端
    • AutoBeans(*):
      • 我在那里(2015-02-07)遇到了类似的问题:
  • 仅客户端
    • Piriti
    • RestyGWT
    • RocketGWT
    • Acris
    • JavaScript覆盖类型(*)
  • 仅服务器端
    • Gson(来自谷歌)
(*)来自GWT项目本身

比较:

  • e、 g

这可能不是您想要的解决方案,但我发现使用JavaScript覆盖类型来轻松处理JSON对象是最好的——更多信息请参见此处:(然后您可以在服务器端使用Gson,在客户端使用JSO——这不是完美的解决方案,但比通过标准GWT方法进行“手动”解析更好)在我看来,编写覆盖类型的工作量与手动解析JSON对象的工作量相同。我已经编写了这个类(从wsdl生成),我正在尝试以json格式对该wsdl执行HTTP请求,并将响应加载到我的对象。你知道什么是最好的方法吗?所以我只应该在后端(服务器)端使用GSON?这是正确的。在客户端,将json转换为对象的最简单方法是使用覆盖类型。遗憾的是,他们没有从后端的GSON对象生成“覆盖”类的选项。这将改善这种情况。您只需将数据发送到服务器以将其转换为GSONY您是对的,这就是为什么我要反对这种做法