1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

【Python入門】JSONをパースする方法

【Python入門】
Pocket

JSONはWebアプリケーションでデータのやりとりを行う際に使われるデータ形式です。JSONは人間にもコンピュータにも扱えるように作られた記法ですが、データの量が多くなるとそのままでは読みづらく、ある程度パース(解析)をする必要があります。そこで今回は、PythonでJSONをパースする方法について説明します。

なお、今回の記事では例として「test.json」というjsonファイルを使います。

JSONデータの読み込み

PythonでJSONデータをパースするには、まずJSONデータを辞書型として読み込む必要があります。JSONデータを読み込む方法は大きく分けて2種類あります。

JSONファイルから読み込む

JSONファイルとして保存されているデータを読み込む方法です。データの読み込みにはjsonモジュールのload関数を使います。

まずはJSONファイルは通常のファイルオープンと同様にopen関数で開きます。そして、開いたJSONファイルのファイル変数をjson.loadの引数に渡すことで、JSONファイルを読み込むことができます。load関数で読み込んだJSONファイルは辞書型で保存されます。

実行結果

json_dict:

JSON文字列を辞書型に変換する

JSONデータを読み込むには、JSON形式の文字列を辞書型に変換する方法もあります。JSON形式の文字列の変換にはjsonモジュールのloads
関数を使います。load関数と似ているので間違えないようにしましょう。

loads関数は引数にJSON形式の文字列を渡すと、辞書型に変換して返します。

実行結果

json_dict:

JSONファイルから順序を保ったまま読み込む

load関数を使うことでJSONファイルからデータを読み込むことができますが、そのまま読み込む場合は問題が一つあります。それは、Pythonの辞書型は順番を保たないので、普通にJSONファイルを読み込むと毎回順番がバラバラになってしまいます。それを防ぐためには、loadの「object_pairs_hook」オプションを利用します。

実行結果

json_dict:

Pythonには順番を保ったまま保存する辞書型である「OrderedDict」という型が存在します。JSONをload関数で読み込む際に「object_pairs_hook」オプションで「collections.OrderedDict」を指定することで、JSONデータをOrderedDict型として読み込むので、順序を保ったまま読み込むことができます。

必要なデータを取り出す

JSONの読み込みが完了したら、いよいよJSONデータを解析していきます。JSONデータを解析する際には、JSONデータから必要なデータを取り出す必要がありますが、実はPythonではJSONは辞書型で扱われるので、辞書型と同じ扱いをすることができます。

実行結果

book1の情報:{‘title’: ‘Python Beginners’, ‘year’: 2005, ‘page’: 399}
book3のページ数:344

この例では、通常の辞書型のようにキーを指定して値を取り出しています。また、辞書型のメソッドを使ったり、for文でイテレートすることもできるので、好きなようにデータを取り出す事が出来ます。

実行結果

book4:{‘page’: 1024, ‘year’: 2012, ‘title’: ‘Python Dictionary’}
book2:{‘page’: 650, ‘year’: 2006, ‘title’: ‘Python Developers’}

この例では、JSONデータの中から[page]が500以上のものだけを取り出しています。Pythonの場合は、便利なメソッドが多数用意されているので、JSONデータの解析も簡単に行えます。

コマンドラインで解析する

ここまではPythonのスクリプトを記述してJSONを読み込んだりパースしてきました。しかし、ちょっとした量のJSONを表示したり解析するためだけに毎回スクリプトを記述するのは面倒くさいです。

そんな時のために、Pythonではコマンドライン上で簡易的なJSONオブジェクトの表示や解析を行うことができます。コマンドライン、もしくはターミナルを起動し、以下のように入力することでコマンドライン上にJSONファイルの中身を表示することができます。

実行結果

{
“book1”: {
“title”: “Python Beginners”,
“year”: 2005,
“page”: 399
},
“book2”: {
“title”: “Python Developers”,
“year”: 2006,
“page”: 650
},
“book3”: {
“title”: “Python cookbook”,
“year”: 2002,
“page”: 344
},
“book4”: {
“title”: “Python Dictionary”,
“year”: 2012,
“page”: 1024
}
}

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ
ページ上部へ戻る