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

【Android開発】Volleyライブラリを使ってJSONを解析する方法をステップ解説

Volleyライブラリとは

この記事では、AndroidアプリでVolleyライブラリを使用してJSONデータを解析(パース)する方法を、ステップごとにわかりやすく解説します。VolleyはGoogleが提供するHTTP通信ライブラリで、ネットワークリクエストの管理やJSONの取得・解析を少ないコード量で実現できるのが特徴です。

ステップ1:新規プロジェクトの作成

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

ステップ2:レイアウトファイル(activity_main.xml)の作成

次に、res/layout/activity_main.xml に以下のコードを追加します。取得した結果を表示する TextView と、JSON解析を開始するための Button を配置しています。

<?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="16sp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textViewResult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:textSize="20sp" />

    <Button
        android:id="@+id/btnParse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="20sp"
        android:text="Parse JSON"/>
</RelativeLayout>

ステップ3:Volleyの依存関係を追加

Volleyを使用するには、app/build.gradle の dependencies ブロックに以下の1行を追加し、「Sync Now」をクリックしてプロジェクトを同期します。

dependencies {
    implementation 'com.android.volley:volley:1.2.1'
}

ステップ4:テスト用JSONデータの準備

続いて、テスト用のJSONデータを用意します。myjson.com のようなオンラインJSONホスティングサービスを利用すれば、独自のJSONArrayを簡単に作成できます(※同種のサービスには jsonblob.com などもあります)。ここでは従業員情報を例にします。

{
    "employees": [
        {
            "firstname": "Niyaz",
            "age": 30,
            "mail": "niyaz3444@gmail.com"
        },
        {
            "firstname": "Mashu",
            "age": 25,
            "mail": "mashu123@gmail.com"
        },
        {
            "firstname": "Rahul",
            "age": 22,
            "mail": "rahul@gmail.com"
        },
        {
            "firstname": "Azhar",
            "age": 40,
            "mail": "azhar0987@gmail.com"
        },
        {
            "firstname": "Aachu",
            "age": 32,
            "mail": "aachu@gmail.com"
        }
    ]
}

JSONへ直接アクセスできるURL(例:https://api.myjson.com/bins/xbspb)をコピーしておき、後述の MainActivity.java に貼り付けてください。

ステップ5:MainActivity.javaの実装

src/MainActivity.java に以下のコードを記述します。ボタンをタップすると、Volleyの JsonObjectRequest を使ってJSONを取得し、「employees」配列から氏名・年齢・メールアドレスを1件ずつ取り出してTextViewに追記表示していきます。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    private RequestQueue requestQueue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textViewResult);
        Button buttonParse = findViewById(R.id.btnParse);
        requestQueue = Volley.newRequestQueue(this);

        buttonParse.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                jsonParse();
            }
        });
    }

    private void jsonParse() {
        String url = "https://api.myjson.com/bins/xbspb";

        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("employees");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject employee = jsonArray.getJSONObject(i);
                                String firstName = employee.getString("firstname");
                                int age = employee.getInt("age");
                                String mail = employee.getString("mail");
                                textView.append(firstName + ", " + String.valueOf(age) + ", " + mail + "\n\n");
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                    }
                });
        requestQueue.add(request);
    }
}

ステップ6:AndroidManifest.xmlに権限を追加

ネットワーク通信を行うため、androidManifest.xml にインターネット権限(INTERNET)を追加します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">

    <uses-permission android:name="android.permission.INTERNET"/>

    <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開発】Volleyライブラリを使ってJSONを解析する方法をステップ解説

  1. AndroidでJSONObjectを使ってJSONを解析する方法をわかりやすく解説

    はじめにこの記事では、Androidアプリ開発においてJSONObjectクラスを使用してJSONデータを解析(パース)する方法を、実際のコード例とともにステップごとに解説します。JSONはWeb APIなどで広く使われるデータ形式であり、Android開発では必須の知識です。手順1:新しいプロジェクトを作成するAndroid Studioを開き、File → New Projectを選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトのセットアップを完了させてください。手順2:レイアウトファイル(activity_main.xml)を編集するres/layout/a

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

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