与 GWT 一起使用的 Json <-> Java 序列化

标签 json serialization gwt marshalling javabeans

我正在寻找一个 simple Json (de)serializer for Java,它可能适用于 GWT。我搜索了一下,发现一些解决方案要么需要注释每个成员,要么定义无用的接口(interface)。挺无聊的。为什么我们没有一些非常简单的东西,比如

class MyBean {
    ...
}

new GoodSerializer().makeString(new MyBean());
new GoodSerializer().makeObject("{ ... }", MyBean.class)

最佳答案

看看 GWT 的 Overlay Types .我认为这是迄今为止在 GWT 中使用 JSON 最简单的方法。这是链接文章中修改后的代码示例:

public class Customer extends JavaScriptObject {
    public final native String getFirstName() /*-{ 
        return this.first_name;
    }-*/;
    public final native void setFirstName(String value) /*-{
        this.first_name = value;
    }-*/;
    public final native String getLastName() /*-{
        return this.last_name;
    }-*/;
    public final native void setLastName(String value) /*-{
        this.last_name = value;
    }-*/;
}

一旦定义了覆盖类型,就很容易从 JSON 创建一个 JavaScript 对象并在 Java 中访问它的属性:

public static final native Customer buildCustomer(String json) /*-{
    return eval('(' + json + ')');
}-*/;

如果你想要对象的 JSON 表示,你可以将覆盖类型包装在一个 JSONObject 中:

Customer customer = buildCustomer("{'Bart', 'Simpson'}");
customer.setFirstName("Lisa");
// Displays {"first_name":"Lisa","last_name":"Simpson"}
Window.alert(new JSONObject(customer).toString());

关于与 GWT 一起使用的 Json <-> Java 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683123/

相关文章:

c++ - 用于嵌入式平台的 C++ 中的简单 JSON-RPC?

javascript - 循环每个输入的相对记录并纠正重复记录

javascript - 删除 json 对象中的数组项的问题

c++ - 如何将 std::wstring 包装在 boost::asio::buffer 中?

c# - 解析无效的 XML C#

reflection - XML 文件中的 GWT 动态菜单。如何反射(reflect)复合 Material 的类?

java - 如何从json(url)解析数据并将数据发送到url

javascript - 将 JSON 数据反序列化到字典 <string, string> 时出错

javascript - 需要 Javascript 库推荐

GWT FileUpload 不适用于 Chrome 和 Opera