Pythonの基礎 ファイル(JSON)の読み込み編
Pythonの基礎 JSONの読み込み編
JSONを読み込む
Webサービスでは、例えばどこかのサービスが提供しているAPIにアクセスして 情報をもらい、それを編集しえ自らのサイトに反映させるということがあります。
その際の情報の提供は、大抵の場合にはJSONまたはXMLとなると思います。
XMLもJSONもシンプルな仕様で理解しやすいため、広く使われていますね。
JSONについては説明不要だと思いますが、以下の公式サイトの図がとても分かりやすいです。
Pythonの公式サイトをチェックしてみる
とりあえずサンプルコードをそのまま見てみましょう
このようなjsonがあるとします。 {"group2":{"Eric":44, "ken":33, "John":44, "Mike":99},"group1":{"Adam":40, "David":71, "Chris":60, "Bob":74}}
dumps()で表示してみる
以下のようなPythonコードを試してみましょう。
#coding:utf-8 import json f = open('data.json', 'r') jsonData = json.load(f) print json.dumps(jsonData, sort_keys = True, indent = 4) f.close()
#実行結果 { "group1": { "Adam": 40, "Bob": 74, "Chris": 60, "David": 71 }, "group2": { "Eric": 44, "John": 44, "Mike": 99, "ken": 33 } }
インデントされ、さらにgroupのキーでソートされているこが分かると思います。 コードを見ていきましょう。
とりあえずファイルを開いてみる
#coding:utf-8 import json #jsonモジュールのインポートです f = open('data.json', 'r')#ここはテキストファイルなどと同じですね。
jsonとして読み込むload()
jsonData = json.load(f)
csvではreader()を使ったように、jsonではload()を使います。 これにより、jsonのデータをpythonのオブジェクトとして扱うことができるようになります。
dumps()で読みやすく表示する。
print json.dumps(jsonData, sort_keys = True, indent = 4)
引数を見てみましょう。
jsonDataは、jsonオブジェクトですね。
ひとつ飛ばして、indentはインデント。4文字でのインデントです。
さて、sort_keysですが、名前から推測は容易(key値でならべかえです、もちろん) 下記の公式ページの"dumps()"には、sort_keysがありません。
よく探してみると、おなじjsonの中にJSONEncoderというのがあり、その中の昨日としてsort_keysがあるようです。
で、それがどうしてdumpsで??となるわけですが、dumps()の解説にこの文言がありました。
カスタマイズされた JSONDecoder のサブクラスを使うには、 cls キーワード引数に指定します。追加のキーワード引数はこのクラスのコンストラクタに引き渡されます。
ということなのですが、なんとなく釈然としないのです。
dumpするということは、一度オブジェクトとして読み込んだデータを、もう一度jsonとしてエンコードするというのは分かりますが、使い方としてclsを指定している訳でもなく。
とりあえずは、「こういうもの」としておきます。。。。すみません。
load()で読むと、辞書型になる
今日の注意事項ですね。
シンプルにファイルを開いた後で、辞書として読み込みました。 ということで、このjsonDataの中身を辞書を扱うのと同じように、データの取得などができる、ということですね。
では次回以降、読み込んだデータを編集したりしてみましょう。
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (124件) を見る