Gsonは、JavaオブジェクトとJSONデータのJavaクラスライブラリ間のマッピングのためにGoogleが提供されます。JSON文字列は、Javaオブジェクト、またはその逆に変換することができます。
Gsonのまず、基本的な使い方
構文解析の基本データ型(他の種類を解析する文字列)
Gson gson = new Gson();
int i = gson.fromJson("100", int.class); //100
double d = gson.fromJson("\"99.99\"", double.class); //99.99
boolean b = gson.fromJson("true", boolean.class); // true
String str = gson.fromJson("String", String.class); // String
基本データ型の生成
Gson gson = new Gson();
String jsonNumber = gson.toJson(100); // 100
String jsonBoolean = gson.toJson(false); // false
String jsonString = gson.toJson("String"); //"String"
JSONを生成POJOクラス
Gson gson = new Gson();
User user = new User("毛驴哥",24);
String jsonObject = gson.toJson(user); // {"name":"毛驴哥","age":24}
POJOクラスの解析JSON
Gson gson = new Gson();
String jsonString = "{\"name\":\"毛驴哥\",\"age\":24}";
User user = gson.fromJson(jsonString, User.class);
第二に、プロパティが@SerializedNameアノテーションを使用して名前を変更します
EMAIL_ADDRESSは、JSONのプロパティ名に対応することができますEMAILADDRESS
@SerializedName("email_address")
public String emailAddress;
SerializedName注釈が上記使用さ一方が2つの属性が、提供、プロパティが存在しない外側の代替文字列の配列を受け取ります。
@SerializedName(value = "emailAddress", alternate = {"email", "email_address"})
public String emailAddress;
正しい結果のいずれかが得られる場合に3つのプロパティ(EMAIL_ADDRESS、電子メール、EMAILADDRESS)が発生します。
三、Gsonは、ジェネリックを使用します
Javaのリストについては、
上記課題を解決するために、Gsonは、私たちはジェネリックのサポートを実装するためにTypeToken提供します
Gson gson = new Gson();
String jsonArray = "[\"Android\",\"Java\",\"PHP\"]";
String[] strings = gson.fromJson(jsonArray, String[].class); //直接改为 List<String>.class 是行不通
List<String> stringList = gson.fromJson(jsonArray, new TypeToken<List<String>>() {}.getType());
注意:TypeTokenコンストラクタが変更保護されて、それが新しいTypeToken <リストの一番上に書き込まれます