【Java】JSONデータを取り出す方法を総まとめ

JavaでJSONデータを取り出すことはできるの?
取り出し方を教えて!

JavaでもJSONデータを扱うことができるよ。
JSONデータを取り出す方法を解説するね!

目次

JSONとは?

JSONは「JavaScript Object Notation」の略で、
データを表現するための形式の1つだよ!

JSONはフロントエンドとサーバサイド間で、データをやり取りする際によく利用されます。

Java以外にもPythonやPHP、Rubyなど様々な言語で利用することができます。

今回はJavaで、JSONデータを取り出す(パース)方法を解説していきます。

JSONパースの準備

パース処理をするときは例外処理の中に記述するよ!

値を正しく取り出せなかったとき、予期しないエラーに対処するためにこのように記述します。

try {
  // JSONパース処理をここに記述
} catch(JSONException e) {
  e.printStackTrace();
}

JSONパースの基本

JSONをパースする基本的な方法から解説するよ!

まずはJSONデータを準備しておきます。

{
  "name": "Ichiro",
  "age": "3"
}

new JSONObject()を利用してインスタンスを作成します。

String jsonData = "{ \"name\": \"Ichiro\", \"age\": 3 }";
JSONObject jsonObj = new JSONObject(jsonData);

作成したインスタンスを使ってJSONデータをパースしていきます。
JSONデータの値を取り出すときはgetString()を利用します。

String name = jsonObj.getString("name");

これでname変数にはIchiroという値が入ります。
以上がJSONデータの基本的な扱い方になります。

パースする一連の流れがイメージできたよ!

多階層のオブジェクトデータを扱う方法

多階層のデータ構造になっているJSONデータの扱い方を解説するね!

扱うJSONデータは多階層のデータ構造になっているものが多いと思います。
次は多階層のオブジェクトデータで構成されているJSONデータをパースする方法を説明します。

{
  "world": {
    "asia": {
      "japan": "Tokyo",
      "taiwan": "Taipei",
      "india": "Delhi"
    }
  }
}

JSONインスタンスを作成します。

String jsonData = "{ \"world\": { \"asia\": { \"japan\": \"Tokyo\", \"taiwan\": \"Taipei\",  \"india\": \"Delhi\" } }";
JSONObject jsonObj = new JSONObject(jsonData);

オブジェクトデータはgetJSONObject()で取り出すことができます。

JSONObject world = jsonObj.getJSONObject("world");
JSONObject asia = world.getJSONObject("asia");
String japan = asia.getString("japan");

また短縮して記述することもできます。こちらは上記と同様の結果になります。

JSONObject japan = jsonObj.getJSONObject("world").getJSONObject("asia").getString("japan");

少し記述が長くなるけどJSONデータを取得できた!

配列のオブジェクトデータを扱う方法

少し複雑なデータ構造の扱い方について解説するね!

最後に配列の中にオブジェクトデータを持っているJSONデータをパースする方法を紹介します。

{
  "people": [
    {
      "name": "Ichiro",
      "age": 3
    },
    {
      "name": "Jiro",
      "age": 2
    },
    {
      "name": "Saburo",
      "age": 1
    },
  ]
}

JSONインスタンスを作成します。

String jsonData = "{ \"people\": [ { \"name\": \"Ichiro\", \"age\": 3 }, { \"name\": \"Jiro\", \"age\": 2 }, { \"name\": \"Saburo\", \"age\": 1 } ] }";
JSONObject jsonObj = new JSONObject(jsonData);

配列データはgetJSONArray()で取り出すとことができます。

JSONObject people =jsonObj.getJSONArray("people");

値を取り出すときはループ処理を使います。

for(int i = 0; i < people.length(); i++) {
  JSONObject person = people.getJSONObject(i);

  String name = person.getString("name");
  String age = person.getString("age");
}

これでいろんなJSONデータを扱うことができそう!

まとめ

  • JSONとはデータを扱う形式の1つである
  • パース処理をするときは例外処理の中で行う
  • インスタンスの作成はnew JSONObjectを利用する
  • 値を取り出すときはgetString()を利用する
  • オブジェクトデータを取り出すときはgetJSONObject()利用する
  • 配列データを取り出すときはgetJSONArray()を利用する
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次