Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidでJSON配列を反復処理する方法をステップごとに解説

この記事では、Androidアプリ開発においてJSON配列(JSONArray)を反復処理する方法を、実際のサンプルコードとともにステップ形式で解説します。org.jsonパッケージのJSONObjectJSONArrayクラスを使用して、JSON文字列からデータを取り出し、画面に表示するまでの一連の流れを学べます。

完成イメージ

本チュートリアルでは、従業員情報(ID・名前・給与)を含むJSON文字列を解析し、各要素を順番に読み取ってTextViewに表示するシンプルなアプリを作成します。

手順1:Android Studioで新規プロジェクトを作成する

まず、Android Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトのセットアップを完了させてください。

手順2:レイアウトファイル(activity_main.xml)を編集する

次に、res/layout/activity_main.xmlに以下のコードを追加します。ここでは、画面中央に結果を表示するためのTextViewを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:padding="8dp"
   tools:context=".MainActivity">
   <TextView
      android:id="@+id/textView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:textSize="16sp"
      android:textStyle="bold" />
</RelativeLayout>

手順3:MainActivity.javaにJSON解析処理を実装する

src/MainActivity.javaに以下のコードを記述します。ポイントは以下の通りです。

  • JSONObjectでJSON文字列全体をオブジェクト化する
  • optJSONArray()で「Employee」というキーに対応するJSONArrayを取得する
  • forループで配列の長さ分だけ繰り返し、各要素をgetJSONObject()で取り出す
  • optString()でID・名前・給与の値を読み取り、StringBuilderに追記していく
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
   TextView textView;
   String strJson = "{ \"Employee\" :[{\"ID\":\"01\",\"Name\":\"Sam\",\"Salary\":\"50000\"},"
      + "{\"ID\":\"02\",\"Name\":\"Shankar\",\"Salary\":\"60000\"}] }";
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      textView = findViewById(R.id.textView);
      StringBuilder data = new StringBuilder();
      try {
         JSONObject jsonRootObject = new JSONObject(strJson);
         JSONArray jsonArray = jsonRootObject.optJSONArray("Employee");
         for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            int id = Integer.parseInt(jsonObject.optString("ID"));
            String name = jsonObject.optString("Name");
            float salary = Float.parseFloat(jsonObject.optString("Salary"));
            data.append("Employee ").append(i).append(" : \n ID= ")
               .append(id).append(" \n " + "Name= ")
               .append(name).append(" \n Salary= ")
               .append(salary).append(" \n\n ");
         }
         textView.setText(data.toString());
      }
      catch (JSONException e) {
         e.printStackTrace();
      }
   }
}

JSON解析時には不正な形式のデータが渡された場合に備えて、JSONExceptionをtry-catchで適切にハンドリングしている点にも注目してください。実務では、ネットワーク通信で取得したJSONも同じ要領で処理できます。

手順4:AndroidManifest.xmlを確認する

androidManifest.xmlには以下のようにMainActivityをランチャーアクティビティとして登録します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリを実行して動作を確認する

それでは、アプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提としています。Android Studioからアプリを起動するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択画面で自分のモバイル端末を選択すると、端末側に以下のような結果画面が表示されます。

AndroidでJSON配列を反復処理する方法をステップごとに解説

まとめ

このように、JSONObjectでルートオブジェクトを生成し、optJSONArray()で配列を取得したうえでforループにより各要素へアクセスすることで、AndroidでもJSON配列を簡単に反復処理できます。APIレスポンスの解析など、実践的な場面でも応用できる基本テクニックなので、ぜひマスターしておきましょう。

  1. AndroidでJSONオブジェクトを解析する方法!RecyclerViewで一覧表示する完全ガイド

    AndroidでJSONオブジェクトを解析する方法 この記事では、AndroidアプリでJSONオブジェクトを解析(パース)し、取得したデータをRecyclerViewに一覧表示する方法を、ステップごとにわかりやすく解説します。アセットフォルダに配置したJSONファイルを読み込み、名前・メールアドレス・電話番号の情報を取り出して画面に表示するまでの一連の流れを学べるので、Android開発初心者の方にもおすすめの内容です。 手順1:新規プロジェクトを作成する まず、Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項

  2. AndroidでJSONを解析する方法を徹底解説!初心者向けステップバイステップガイド

    はじめに この記事では、AndroidアプリでJSONデータを解析(パース)する方法を、実際のコード例とともにわかりやすく解説します。JSONはWeb APIなどで広く利用されているデータ形式であり、Android開発においてその扱い方をマスターすることは非常に重要です。 ステップ1:新規プロジェクトの作成 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成しましょう。 ステップ2:レイアウトファイルの作成 次に、res/layout/activity_main.xm