biz-Stream を使用しているJavaアプリケーションと,
他言語で実装されているアプリケーションとの間で
データの受渡しをする場合,JSONを用いると効率的です.
今回は,JSONデータを取り扱うJavaライブラリGoogle GSONを紹介したいと思います.
JSONデータを取り扱うJavaライブラリとしては,Jackson Java JSON-processorが有名ですが,
今回紹介するGSONは,Jacksonに比べ,シンプルな処理で,
JavaオブジェクトとJSONの変換を行うことができるのが特徴です.
- 《 Javaオブジェクト ==> JSON 変換 》
import java.io.*; import com.google.gson.*; import com.google.gson.annotations.*; import com.google.gson.stream.*; public class MyGsonTest { // Javaオブジェクト定義 public class MyJsonType { // JSON要素名がJavaの変数名規約違反となる場合 @SerializedName("first-name") private String first_name; private String last_name; public MyJsonType() { } public MyJsonType( String fn, String ln) { this.first_name = fn; this.last_name = ln; } } public static void main( String[] args) { // Javaオブジェクト ==> JSON MyJsonType mjobj = new MyJsonType("太郎","名刺"); OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream("MyJson.json") )); JsonWriter jsw = new JsonWriter(osw); Gson mygson = new Gson(); mygson.toJson( mjobj, mjobj.getClass(), jsw ); } }
とすると,出力されたJSONファイルの中身は以下のようになります.
- 《 MyJson.json 》
{"first-name": "太郎", "last_name": "名刺"}
また,以下のJSONファイルを読み込み
- 《 YourJson.json 》
{"first-name": "花子", "last_name": "ブレイン"}
- 《 JSON ==> Javaオブジェクト 変換 》
import java.io.*; import com.google.gson.*; import com.google.gson.annotations.*; import com.google.gson.stream.*; public class MyGsonTest { // Javaオブジェクト定義 public class MyJsonType { // JSON要素名がJavaの変数名規約違反となる場合 @SerializedName("first-name") private String first_name; private String last_name; public MyJsonType() { } public MyJsonType( String fn, String ln) { this.first_name = fn; this.last_name = ln; } } public static void main( String[] args) { // JSON ==> Javaオブジェクト InputStreamReader isr = new InputStreamReader( new FileInputStream("YourJson.json")); JsonReader jsr = new JsonReader( isr ); Gson mygson = new Gson(); MyJsonType mjobj = new MyJsonType(); mjobj = mygson.fromJson( jsr, mjobj.getClass() ); System.out.println( mjobj ); } }
とすると,以下の標準出力が得られます.
- 《 出力したJavaオブジェクトのデータ 》
-
{first-name=花子, last_name=ブレイン}
このように,シンプルな処理で,JavaオブジェクトとJSON間の変換処理が実現できます.