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 的东西。
【讨论】:
别忘了继承模块:<inherits name="com.google.web.bindery.autobean.AutoBean"/>
如何获得beanFactory
的实例?【参考方案2】:
我建议你使用RestyGWT,它使 JSON REST 服务像 GWT RPC 服务一样工作。
【讨论】:
【参考方案3】:看看 GWT 的 AutoBean 框架,它可用于创建和接收 JSON 有效负载。 RequestBuilder
类型可用于向服务器发送 HTTP 请求。
【讨论】:
【参考方案4】:您还有另一个解决方案,即第 3 方解决方案,可能是第二方解决方案,但也可以是第一方解决方案。 第 3 方称为 GSON,它是 google 代码上的一个开源项目。 你可以找到它here。
我用过,很好用,也很简单。
【讨论】:
GSON 不能在 GWT 客户端使用,因为它使用反射。以上是关于GWT(客户端)=如何将对象转换为 JSON 并发送到服务器?的主要内容,如果未能解决你的问题,请参考以下文章