はじめに
GSONは、Googleが提供するJSONのパースするライブラリである。
JavaのオブジェクトとJSONを変換できるがKotlinでも可能である。
今回はKotlinのMutableMapと変換が簡単にできたので共有したい。
GSONの使い方
Android Studioのに以下の記述をする。
dependencies {
implementation 'com.google.code.gson:gson:*.*.*'
}
「..*」最新のバージョンを記載する。
最新バージョンは以下から確認する。
https://github.com/google/gson
上記を記載したらAndroid Studio上の「Sync Now」をクリックすれば準備完了。
これでプロジェクトでGSONが使用可能となる。
JavaのMapをJSON変換
JSON変換処理を以下のように実装してみた。
public void test(){
ArrayMap<String, String> map = new ArrayMap<>();
map.put("a1", "A1");
map.put("a2", "A2");
map.put("a3", "A3");
Gson gson = new Gson();
String jsonString = gson.toJson(map);
Log.d("Java", jsonString);
Type type = new TypeToken<ArrayMap<String, String>>(){}.getType();
ArrayMap<String, String> map2 = gson.fromJson(jsonString, type);
for (String mapValue : map2.values()) {
Log.d("Java", mapValue);
}
}
Logを確認すると
D/Java: {"a1":"A1","a2":"A2","a3":"A3"}
D/Java: A1
A2
A3
のようになる。JSON変換できることが確認できた。
ここまでは前からできたので目新しいことはない。
KotlinのMapをJSON変換
ここからが本題。
上記のJavaの実装をKotlinで実装する。
MapはKotlinのMutableMapを使用する。
fun test(){
val map : MutableMap<String, String> = mutableMapOf()
map.put("a1", "A1")
map.put("a2", "A2")
map.put("a3", "A3")
val gson = Gson()
val jsonString : String = gson.toJson(map)
Log.d("Kotlin", jsonString)
val type : Type = object : TypeToken<MutableMap<String, String>>() {}.type
val map2 : MutableMap<String, String> = gson.fromJson(jsonString, type)
for (mapValue in map2.values) {
Log.d("Kotlin", mapValue)
}
}
Logを確認すると
D/Kotlin: {"a1":"A1","a2":"A2","a3":"A3"}
D/Kotlin: A1
A2
A3
のようになる。Javaと同様にJSON変換できることが確認できた。
終わりに
Kotlinの使いやすさはGOOD!