サーバーの代わりにクライアント側アプリケーションと 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);
}
});
}
}