{以下のプログラムは、クライアント側のプログラムです。Userクラスに自動的にマッピングしてくれます。
"name":"ochi",
"age":10,
"adress":
{"name":"Osaka"}
}
JsonpRequestBuilder jb = new JsonpRequestBuilder(); jb.requestObject( "http://XXXXX.XXX.XXXX.json", new AsyncCallback<JsArrayここで、注意しなければならないのは、クラスの宣言方法です。下記のように、JSNI形式でなければなりません。>() { public void onFailure(Throwable caught) { GWT.log("failure", caught); } public void onSuccess(JsArray<User> result) { StringBuilder sb = new StringBuilder(); Window.alert("Success"); for (int i = 0; i < result.length(); i++) { sb.append(result.get(i).getName()); } resultArea.setValue(sb.toString()); } });
import com.google.gwt.core.client.* ; import java.util.* ; final public class User extends JavaScriptObject { protected User(){ } public native java.lang.Long getId()/*-{ return this['id']; }-*/; public native Address getAddress()/*-{ return this['address']; }-*/; public native java.lang.String getName()/*-{ return this['name']; }-*/; final static public class Address extends JavaScriptObject { protected Address(){ } public native java.lang.String getName()/*-{ return this['name']; }-*/; } }このようなクラスを記述するのが手間ですが、実は作成を支援してくれるサイトがあります。
JSONの雛形データをいれるとこのフォーマットに変換してくれるとても素敵なサイトです。(こういう世のためになるサイトを作りたいですね)
(追記:2010/10/22)
***.gwt.xml ファイルには
<inherits name='com.google.gwt.jsonp.Jsonp' />の記述が必要です。
0 件のコメント:
コメントを投稿