3

サーバーの代わりにクライアント側アプリケーションと REST Web サービスに GWT を使用しています (GWT で RPC またはサーブレットを使用していません)。Java オブジェクトを JSON に変換し、JSON オブジェクトをクライアントからサーバーに、またサーバーからクライアントに渡したいと考えています。しかし、処理のために、JSONオブジェクトをJavaオブジェクトiサーバーに変換したいと考えています。GSON は GWT でサポートされていません Java オブジェクトを JSON オブジェクトに、またはその逆に変換する方法はありますか?

Java オブジェクトを JSON に変換するために Autobean フレームワークを使用してサンプル プロジェクトを実行しましたが、次のエラーが発生しました。

[ERROR] [gwtmodules] - Deferred binding result type 'com.mycompany.gwtmodules.client.MyFactory' should not be abstract
] Failed to create an instance of 'com.mycompany.gwtmodules.client.Gwtmodules' via deferred binding 
java.lang.RuntimeException: Deferred binding failed for 'com.mycompany.gwtmodules.client.MyFactory' (did you forget to inherit a required module?)

以下は私のコードです

public interface Test {


    public int getAge();
    public void setAge(int age);
    public String getName();
    public void setName(String name);

}

import com.google.web.bindery.autobean.shared.AutoBean;
import com.google.web.bindery.autobean.shared.AutoBeanFactory;

public interface MyFactory extends AutoBeanFactory{
AutoBean<Test> test();
}
public class Gwtmodules implements EntryPoint {

    MyFactory factory = GWT.create(MyFactory.class);

    /**
     * This is the entry point method.
     */
    Test makeTest() {
        // Construct the AutoBean
        AutoBean<Test> test = factory.test();

        // Return the Person interface shim
        return test.as();
    }

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

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

    public void onModuleLoad() {

        final Test test = makeTest();
        test.setAge(44);
        test.setName("achu");
        final Button button = new Button("Click here");
        button.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                String s = serializeToJson(test);
                Window.alert("alert" + s);

            }
        });
    }
}
4

1 に答える 1

14

JavaオブジェクトをJSONオブジェクトに、またはその逆に変換する方法はありますか?

GWT の autobean フレームワークを使用できます。サーバー側とクライアント側の両方で使用できます。

例:

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

Test deserializeFromJson(String json) 
{     
    AutoBean<Test> bean = AutoBeanCodex.decode(myFactory, Test.class, json);     
    return bean.as();   
} 
于 2013-01-16T10:37:37.897 に答える