現在、JavaオブジェクトをJSONに変換できるオープンソースプロジェクトがいくつかあります。ただし、ほとんどのプロジェクトでは、クラスファイルにJavaアノテーションを含める必要があります。これは、ソースコードを変更できない場合は実行できません。また、Java Genericsもサポートしていません。しかし、GSONはこれらの2つのポイントを彼の非常に重要なデザイン目標として取ります。
特徴:
GSONのアプリケーションには、主にTojsonとFromjsonの2つの変換方法が含まれています。このオブジェクト変換を使用する前に、オブジェクトのクラスとそのメンバーを作成して、JSON文字列を対応するオブジェクトに正常に変換する必要があります。
パブリッククラスgsonutil {public static gson gson; / ** json to javabean **/ public static final int json_javabean = 0x10001; / ** json to list <t> **/ public static final int json_list = 0x10002; / ** json to Map <t> **/ public static final int json_map = 0x10004; / *** json形式の文字列にオブジェクトを変換* @paramオブジェクトはjsonのオブジェクトに変換されます* @return文字列:json形式の文字列*/ public static string convertobject2json(object object){gson = new gson(); return gson.tojson(object); } / *** jsonをJavaオブジェクトに変換* @param inputstream inputstreamにjavaオブジェクトに変換する* @param javabean listマップに含まれるjavabeanを取得* @param convertflag convert intefier* @returnオブジェクト:javaオブジェクト* / public static convertams2obean <? gson = new gson();オブジェクトオブジェクト= null; // string json = inputstream2string(inputstream); bufferedreader reader = intputstream2bufferedreader(inputstream);型型= getType(javabean、convertflag); object = gson.fromjson(reader、type);オブジェクトを返します。 } / ** *オブジェクトタイプを取得します。 switch(convertflag){case json_list:if(javabean.equals(news.class)){// json to list generic type = new typetoken <list <news >>(){}。getType(); } 壊す;ケースjson_map:if(javabean.equals(news.class)){// json generic type = new typetoken <map <string、news >>(){}。getType(); } 壊す;ケースjson_javabean:// jsonからjavabean type = javabean;壊す; } return type; } / ** * inputStreamにbufferedReaderにカプセル化します * @param inputstream * @return * / private static bufferedreader inputstream2bufferedreader(inputstream inputstream){return new bufferedreader(new inputStreamReader(inputStream)); }}コード分析:
JSONをオブジェクトに変換する場合、上記のコードはサーバー側から入力ストリームを取得し、入力ストリームをBufferedReaderオブジェクトにカプセル化し、fromJSON()メソッドを介してJSONをJavaオブジェクトに変換します。
gsonのfromjson()メソッドの最初のパラメーターは、型文字列、jsonelement、およびreaderのパラメーターをサポートし、ニーズに応じて選択できます。 fromjson()メソッドの2番目のパラメーターは、タイプとクラスのパラメーターをサポートしています。 JSONをJavabeanに変換する場合、クラス<?>パラメーターを使用できます。つまり、2番目のパラメーターとしてJavabeanに対応するjavabean.calsを使用できます。 JSONをリストジェネリックに変換する必要がある場合、およびMAP Genericsを使用する場合、typetokenを使用して2番目のパラメーターをタイプタイプに変換する必要があります(TypetokenはGSONが提供するデータ型コンバーターであり、さまざまなデータ収集型変換をサポートできます)。