GWT(客户端)=如何将对象转换为 JSON 并发送到服务器?

Posted

技术标签:

【中文标题】GWT(客户端)=如何将对象转换为 JSON 并发送到服务器?【英文标题】:GWT (Client) = How to convert Object to JSON and send to Server? 【发布时间】:2011-04-14 05:27:50 【问题描述】:

我知道 GWT 有很好的 RPC 支持。但出于各种目的,我需要自己构建它:

1.) 我怎样才能像这样转换一个 Bean 对象(在客户端);

class MyPerson 

String name;
String getName();
void setName(String name);
//..    

用 GWT 转换成 JSON 字符串? (理想情况下只使用来自 GWT/Google 的官方库)。

2.) 其次,如何使用任何 GWT 客户端 Logik 将生成的 JSON 字符串从客户端发送到任何服务器。 (理想情况下只使用来自 GWT/Google 的官方库)。

我搜索了很多,但示例从未显示如何发送数据,而只是接收 JSON 数据。

非常感谢!!! 延斯

【问题讨论】:

【参考方案1】:

GWT 将为您创建一个名为 AutoBeanFactory 的漂亮类,不需要第三方库。见http://google-web-toolkit.googlecode.com/svn-history/r9219/javadoc/2.1/com/google/gwt/editor/client/AutoBeanFactory.html

一旦你有了 AutoBeanFactory,你就可以像这样使用它:

从 SimpleInterface 类型的对象生成 JSON

AutoBean<SimpleInterface> bean = beanFactory.create(SimpleInterface.class, simpleInterfaceInstance);
String requestData = AutoBeanCodex.encode(bean).getPayload();

useRequestBuilderToSendRequestWhereverYouWant(requestData);

从 SimpleInterface 类型的对象解析 JSON

SimpleInterface simpleInterfaceInstance = AutoBeanCodex.decode(beanFactory, SimpleInterface.class, responseText).as();

您可以使用RequestBuilder 发送这些请求,而无需 GWT-RPC 或 RF 的东西。

【讨论】:

别忘了继承模块:&lt;inherits name="com.google.web.bindery.autobean.AutoBean"/&gt; 如何获得beanFactory的实例?【参考方案2】:

我建议你使用RestyGWT,它使 JSON REST 服务像 GWT RPC 服务一样工作。

【讨论】:

【参考方案3】:

看看 GWT 的 AutoBean 框架,它可用于创建和接收 JSON 有效负载。 RequestBuilder 类型可用于向服务器发送 HTTP 请求。

【讨论】:

【参考方案4】:

您还有另一个解决方案,即第 3 方解决方案,可能是第二方解决方案,但也可以是第一方解决方案。 第 3 方称为 GSON,它是 google 代码上的一个开源项目。 你可以找到它here。

我用过,很好用,也很简单。

【讨论】:

GSON 不能在 GWT 客户端使用,因为它使用反射。

以上是关于GWT(客户端)=如何将对象转换为 JSON 并发送到服务器?的主要内容,如果未能解决你的问题,请参考以下文章

在 GWT 中将字符串转换为可拆分表

GWT 客户端:Java 对象到 json 字符串,反之亦然

GWT Autobean - 如何处理列表?

将 mysql 查询结果推送到客户端 GWT

php如何将json对象转字符串

GWT“共享”对象继承/转换器的替代品