Java/J2MEで、以下のような文字列を変換する方法はありますか?
{name:"MyNode", width:200, height:100}
のような文字列を,1行のコードで内部のオブジェクト表現に変換する方法はありますか?
現在の方法はあまりにも退屈なので。
Object n = create("new");
setString(p, "name", "MyNode");
setInteger(p, "width", 200);
setInteger(p, "height", 100);
JSONライブラリとか?
いくつか使ってみましたが、私のお気に入りは
http://code.google.com/p/json-simple/
このライブラリはとても小さいので、J2MEには最適です。
以下のように、1行でJSONをJavaオブジェクトにパースすることができます。
JSONObject json = (JSONObject)new JSONParser().parse("{\"name\":\"MyNode\", \"width\":200, \"height\":100}");
System.out.println("name=" + json.get("name"));
System.out.println("width=" + json.get("width"));
Java用のJSONパーサー]1はたくさんありますね。
[JSONObject.java][2]を参照してください。 JSONObjectは、名前と値のペアの順序付けられていないコレクションです。外部形式は、中括弧で囲まれた文字列で、名前と値の間にはコロンが入り、値と名前の間にはカンマが入ります。内部形式は、名前で値にアクセスするためのget()およびopt()メソッドと、名前で値を追加または置換するためのput()メソッドを持つオブジェクトです。値は以下のいずれかのタイプになります。Boolean、JSONArray、JSONObject、Number、String、または JSONObject.NULL オブジェクトです。
JSONArray.java. JSONArrayは、値の順序付けられたシーケンスです。その外部形式は、値の間にカンマを入れた角括弧で囲まれた文字列です。内部形式は、インデックスによって値にアクセスするためのget()およびopt()メソッドと、値を追加または置換するためのput()メソッドを持つオブジェクトです。値は以下のいずれかのタイプになります。Boolean、JSONArray、JSONObject、Number、String、または JSONObject.NULL オブジェクトです。
JSONStringer.java. JSONStringerは、JSONテキストを素早く作成するためのツールです。
JSONWriter.java. JSONWriterは、JSONテキストをストリームに高速で書き込むためのツールです。
JSONTokener.java. JSONTokenerは、ソースの文字列を受け取り、そこから文字やトークンを抽出します。これは、JSONObjectやJSONArrayコンストラクタがJSONソース文字列を解析する際に使用されます。
JSONException.java. JSONExceptionは、構文エラーや手続き上のエラーが検出されたときにスローされます。
JSONString.java. JSONStringは、クラスがそのJSONシリアライゼーションを実装するためのインターフェイスです。