JSON - JavaScript言語のサブセットとして定義された軽量のデータフォーマット †Ajaxなどでデータ通信を行う場合、XMLだと解析(parse)やjavaScriptオブジェクト(配列)への変換が必要だが、 ※JSON-lib ・・・ JavaBeans、MAP、コレクション、配列、XMLデータなどをJSONデータへ変換するためのJavaライブラリ。 ◆AjaxでJSONデータを取得する例(JavaScript側) var ajax = false;
// IE以外
if(window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
// IE用
} else if(window.ActiveXObject) {
try {
ajax = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}
ajax.open("POST",'xxxxxxxxxxxx.do');
ajax.onreadystatechange = function() {
if (ajax.readyState == 4 && ajax.status == 200) {
var obj = document.getElementById(objID);
data = eval("(" + ajax.responseText + ")");
/* json.jsを利用する場合 */
// data = req.responseText.parseJSON();
}
}
ajax.send(null);
◆JSON-libの使用例(サーバサイド) [ JSON文字列を生成する例 ] JSONObject obj = new JSONObject(); // プロパティを登録 obj.put( "id", 1 ); obj.put( "data", "データ1" ); // JSON文字列を生成 System.out.println( obj.toString() ); [ JavaBeanからJSON文字列を生成する例 ] DataBean bean = new DataBean( 1, "データ1" ); // JavaBeanからJSON文字列を生成 JSONObject obj = JSONObject.fromBean( bean ); System.out.println( obj.toString() ); [ Java配列からJSON文字列を生成する例] DataBean db1 = new DataBean( 1, "データ1" );
DataBean db2 = new DataBean( 2, "データ2" );
DataBean[] data = new DataBean[] { db1, db2 };
JSONArray array = JSONArray.fromObject( data );
[ コレクションからJSON文字列を生成 ] ArrayList list = new ArrayList(); list.add( new DataBean( 1, "データ1" ) ); list.add( new DataBean( 2, "データ2" ) ); JSONArray array = JSONArray.fromCollection( list ); [ オブジェクト定義からJavaBeanを生成] String json = JavaScriptから取得したオブジェクト定義のJSON文字列; JSONObject obj = new JSONObject( json ); DataBean bean = (DataBean)JSONObject.toBean( obj, DataBean.class ); System.out.println( bean.toString() ); [ 配列定義からJava配列(要素はDataBeanクラス)を生成 ] String json = JavaScriptから取得した配列定義のJSON文字列; JSONArray obj = new JSONArray( json ); Object[] data = JSONArray.toArray( obj, DataBean.class ); // 配列定義からリストを生成する場合はtoList()メソッドを実行 List list = JSONArray.toList( obj, DataBean.class ); for( Object o : data ) System.out.println( (DataBean)o ); 【注意点】 [ JSON文字列をXMLHttpRequestに送信する(サーバサイド) ] response.setContentType( "application/json; charset=UTF-8" ); out.print( JSON文字列 ); // JSON文字列はUTF-8に変換済みとする out.close(); [ JSON文字列を受信してJavaオブジェクトに変換(サーバサイド) ] String json = request.getParameter( "data" );
if ( json != null ) {
json = new String( json.getBytes( "ISO-8859-1" ), "UTF-8" );
JSONObject obj = JSONObject.fromString( json );
DataBean data = (DataBean)JSONObject.toBean( obj, DataBean.class );
}
|