読者です 読者をやめる 読者になる 読者になる

JSON-lib JavaでJSONを簡単に使う


JSON(JavaScript Object Notation)

JavaScriptにおいて,オブジェクトの定義を行う際に用いられる表記
RFC4627にて規定されている。
XMLより簡素な記述で扱いが楽

JSON-lib

JSON-libはJavaからJSON形式を簡単に扱えるライブラリ
ダウンロードは以下
http://json-lib.sourceforge.net/

今回ダウンロードしたファイルは以下
json-lib-2.3-jdk15.jar
json-lib-2.3-jdk15-sources.jar


この他に以下のライブラリが必要
http://commons.apache.org/からダウンロード

  • jakarta commons-lang 2.4
  • jakarta commons-beanutils 1.7.0
  • jakarta commons-collections 3.2
  • jakarta commons-logging 1.1.1

http://ezmorph.sourceforge.net/からダウンロード

  • ezmorph 1.0.6

JSONObjectの利用

import net.sf.json.JSONObject;

public class JSONSample1 {
	public static void main(String[] args) {
		JSONObject obj = new JSONObject();
		obj.put("id", "0000001");
		obj.put("name", "Thom");
		System.out.println(obj); //{"id":"0000001","name":"Thom"}
	}
}

MapからJSONObjectへ

public class JSONSample2 {
	public static void main(String[] args) {
		Map<String, Object> map = new HashMap<String, Object>();  
		map.put( "name", "json" );  
		map.put( "bool", Boolean.TRUE );  
		map.put( "int", new Integer(1) );  
		map.put( "arr", new String[]{"a","b"} );  
		map.put( "func", "function(i){ return this.arr[i]; }" );  
		  
		JSONObject jsonObject = JSONObject.fromObject( map );  
		System.out.println( jsonObject );
		// {"arr":["a","b"],"int":1,"name":"json","func":function(i){ return this.arr[i]; },"bool":true}
	}
}

ListからJSONArrayへ

public class JSONSample3 {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();  
		list.add( "first" );  
		list.add( "second" );  
		JSONArray jsonArray = JSONArray.fromObject( list );  
		System.out.println( jsonArray );//["first","second"]
	}
}

BeanからJSONObjectへ

public class Bean {
	private Integer id;
	private String name;

	public Integer getId() {return id;}
	public void setId(Integer id) {this.id = id;}
	public String getName() {return name;}
	public void setName(String name) {this.name = name;}
}


public class JSONSample4 {
	public static void main(String[] args) {
		Bean bean = new Bean();
		bean.setId(12);
		bean.setName("Thom");
		JSONObject jsonObject = JSONObject.fromObject(bean);
		System.out.println( jsonObject );//{"id":12,"name":"Thom"}
	}
}

JSONObjectからBeanへ

public class JSONSample5 {
	public static void main(String[] args) {
		JSONObject jsonObject = JSONObject.fromObject("{\"id\":12,\"name\":\"Thom\"}");
		Bean bean = (Bean)JSONObject.toBean( jsonObject, Bean.class );
		System.out.println(bean.getId() + " " + bean.getName() );
	}
}

JSONObjectからXML

以下のサンプルの実行には以下からxom-1.2.1.jarをダウンロードしてクラスパスに追加する必要あり。
http://www.xom.nu/

public class JSONSample6 {
	public static void main(String[] args) {
		JSONObject jsonObject = JSONObject.fromObject("{\"id\":12,\"name\":\"Thom\"}");
		Bean bean = (Bean)JSONObject.toBean( jsonObject, Bean.class );
		System.out.println(bean.getId() + " " + bean.getName() );
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<o><bool type="boolean">true</bool><int type="number">1</int><name type="string">json</name></o>

XMLからJSONへ

上と同様xom-1.2.1.jarが必要

public class JSONSample7 {
	public static void main(String[] args) {
		String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
		"<o><bool type=\"boolean\">true</bool><int type=\"number\">1</int><name type=\"string\">json</name></o>";
		
		JSON json = new XMLSerializer().read( xml );
		System.out.println(json);//{"bool":true,"int":1,"name":"json"}
	}
}