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()
を利用する