Androidプログラミング

【Android】JSONファイルの作成・読み込む方法【Kotlin】

androidでjsonファイル読み込み方法紹介のアイキャッチ画像 Android

AndroidアプリでJSONファイルを読み込む方法を紹介します。AndroidStudio内assetsフォルダにjsonファイルを配置することで、簡単に読み込むことができるようになります。

JSON書き込み方法は以下記事で紹介しています。

スポンサーリンク

前準備:androidプロジェクトにjsonファイルを配置する

jsonファイルを読み取るためには、まずjsonファイル自体をアプリ内に配置(保存)する必要があります。本記事ではおそらく一番簡単な方法である、assetsフォルダ内にjsonファイルを保存する方法を紹介します。

まずはプロジェクト内にassetsフォルダを作成します。

AndroidStudioにて、「File > New > Folder > Assets Folder」を選択します。
するとAssetsフォルダを作成に関する確認のウィンドが出てきます。「Finish」をクリック。

assetsフォルダの作り方
AndroidStudioの右上のFileから順番に

これでプロジェクト内にassetsフォルダを作成できました。
次にjsonファイルを作成します(フォルダ上にて右クリック>New>Fileから作成)。

assetsフォルダ内に作成したjsonファイル
assetsフォルダ内にjsonファイルを作成した様子

ここでは「myjson.json」というファイル名で、中身は以下のようにしました(佐藤と山田の情報)。
jsonファイルの中身は何でもよいですが、コピペ用として一応掲載。

{
  "students": [
    {
      "name": "佐藤",
      "no": 1,
      "height-weight": [170,60],
      "score": {
        "testA": 70,
        "testB": 80,
        "testC": 90
      }
    },
    {
      "name": "山田",
      "no": 2,
      "height-weight": [180,80],
      "score": {
        "testA": 82,
        "testB": 85,
        "testC": 87
      }
    }
  ]
}
スポンサーリンク

jsonファイルを読み込む(Kotlin)

まず文字列として読み込み、変数jsonStrに格納します。
次にその文字列をJSONObjectに、さらにそれをJSONArrayと変形することで自在にデータを取り出せるようになります。

//jsonファイルの読み込み(テキスト形式)
val assetsManager = resources.assets
val inputStream = assetsManager.open("myjson.json")
val bufferedReader = BufferedReader(InputStreamReader(inputStream))
val jsonStr = bufferedReader.readText()

//テキストをJSONオブジェクトに変換、さらにJSONアレイに変換
var jsonObj = JSONObject(jsonStr)
var jsonArray = jsonObj.getJSONArray("students")

上記変数jsonArrayにjsonファイルの”students“要素がすべて含まれています。

以下のようにjsonArrayにアクセスすることで情報を抽出することができます。
データはjsonArrayには配列っぽく格納されているので、0番目を指定すると佐藤1番目を指定すると山田の情報を参照します。

val data1 = jsonArray.getJSONObject(0).getString("name")
// 佐藤
val data2 = jsonArray.getJSONObject(1).getString("height-weight")
// [180,80]
val data3 = jsonArray.getJSONObject(1).getString("score")
// {"testA": 82,"testB": 85,"testC": 87}
val data4 = jsonArray.getJSONObject(1).getJSONObject("score").getString("testA")
// 82

上記では.getString()を使用していますが、Intで取り出したい場合は.getInt()、Booleanで取り出したい場合は.getBoolean()などが使用できます。
(jsonファイル側の内容と型の整合が取れない場合、もちろんエラーになります)

スポンサーリンク

さいごに

今回はAndroidアプリでJSONファイルを読み取る方法を紹介しました。JSONは慣れると便利なのでぜひ活用してみてください。

JSONファイルを編集する方法は以下記事で紹介しています。

以下、Android関連記事。

コメント

タイトルとURLをコピーしました