AndroidアプリでJSONファイルを読み込む方法を紹介します。AndroidStudio内assetsフォルダにjsonファイルを配置することで、簡単に読み込むことができるようになります。
JSON書き込み方法は以下記事で紹介しています。
前準備:androidプロジェクトにjsonファイルを配置する
jsonファイルを読み取るためには、まずjsonファイル自体をアプリ内に配置(保存)する必要があります。本記事ではおそらく一番簡単な方法である、assetsフォルダ内にjsonファイルを保存する方法を紹介します。
まずはプロジェクト内にassetsフォルダを作成します。
AndroidStudioにて、「File > New > Folder > Assets Folder」を選択します。
するとAssetsフォルダを作成に関する確認のウィンドが出てきます。「Finish」をクリック。
これでプロジェクト内にassetsフォルダを作成できました。
次にjsonファイルを作成します(フォルダ上にて右クリック>New>Fileから作成)。
ここでは「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関連記事。
コメント