LoginSignup
15
11

More than 3 years have passed since last update.

【Android】KotlinとJavaでMapをGSONを使用してJSONに変換する

Last updated at Posted at 2018-07-05

はじめに

GSONは、Googleが提供するJSONのパースするライブラリである。
JavaのオブジェクトとJSONを変換できるがKotlinでも可能である。
今回はKotlinのMutableMapと変換が簡単にできたので共有したい。

GSONの使い方

Android Studioのに以下の記述をする。

build.gradle
dependencies {
    implementation 'com.google.code.gson:gson:*.*.*'
}

..*」最新のバージョンを記載する。
最新バージョンは以下から確認する。
https://github.com/google/gson

上記を記載したらAndroid Studio上の「Sync Now」をクリックすれば準備完了。

スクリーンショット 2018-07-03 3.12.37.png

これでプロジェクトでGSONが使用可能となる。

JavaのMapをJSON変換

JSON変換処理を以下のように実装してみた。

Sample.java
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を使用する。

Sample.kt
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!

15
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11