PythonでJSONを操作する

Python学習【365日チャレンジ!】157日目のマスターU(@Udemy11)です。

最近オーディブルで本を聴く人が増えているみたいですが、ほんと便利ですよね。

当然本を読むよりは時間がかかりますが、車を運転していたり、電車で移動したりするときも音楽を聴くように読書?ができるので、利用する人が多いようです。

高校生の頃、ラジオで潜水艦のアドベンチャー小説を聴いていたことがあるのですが、想像力が掻き立てられて、臨場感が半端なかったのを憶えています。

いまは英語の勉強をかねて、ハリーポッターシリーズをオーディブルで聴いています。

それではPython学習を始めましょう。

昨日の復習

昨日は、XMLの使い方について学習しました。

XMLはWebやネットワークでよく使われているデータフォーマットで、Webサイトのサイトマップなどに使われています。

記述はHTMLと同じようにタグを使うので、Webサイトを作っている人にとっては非常にとっつきやすいフォーマットです。

詳しくは、昨日の記事をごらんください。

今日は、Jsonデータフォーマットについて学習しましょう。。

JSONとは

日本語にすると、ジェイソンなので、どうしても13日の金曜日に出てくる殺人鬼のジェイソンを思い出してしまいますが、当然のことながら、JSONは殺人鬼のことではありません。

JSONは、JavaScript Object Notationの略で、XMLと並んでWeb関係で活用されているデータフォーマットです。

すでに昨日紹介しましたが、XMLに比べると、シンプルな構造になっていて、JavaScriptとの連携がスムーズなので、Ajax(Asynchronous JavaScript + XML の略)でのデータ交換フォーマットに使われて広まっていきました。

Ajax【Asynchronous JavaScript + XML】とは

Ajaxとは、あるWebページを表示した状態のまま、別のページや再読込などを伴わずにWebサーバ側と通信を行い、動的に表示内容を変更する手法。ページ上でプログラムを実行できるプログラミング言語JavaScriptの拡張機能を用いる。

簡単に言うと、JSONは、インターネットをより便利に活用するために生まれたフォーマットということです。

JSONファイルを作る

Python Web ネットワーク XML

昨日、XMLで作成した表のデータを、JSONを使ってPythonで作成しましょう。

import json


j = [
    {"Id": 1, "Name": "MasterU"},
    {"Id": 2, "Name": "Mark"}
]

with open('test.json', 'w') as f:
    json.dump(j, f)

非常にシンプルですよね。

JSONファイルに記述するコードをそのまま書くような感じです。

9行目でwithステートメントを使いtest.jsonファイルを作成していますが、XML同様に1行でデータが保存されています。

[{"Id": 1, "Name": "MasterU"}, {"Id": 2, "Name": "Mark"}]

JSONファイルを読み込む

次にJSONファイルを読み込んでみましょう。

import json

with open('test.json', 'r') as f:
    print(json.load(f))

出力結果

[{'Id': 1, 'Name': 'MasterU'}, {'Id': 2, 'Name': 'Mark'}]

めっちゃシンプルに読み込むことができます。

JSONフォーマットは、"(ダブルクォーテーション)でくくられていますが、json.load()でPythonに読み込むと'(シングルクォーテーション)でくくられた辞書型に変換されます。

このように、json.load()は、JSON形式ファイルを読み込んで辞書型に変換、つまり"'にかえて読み込む時に使います。

また、Python上で、辞書型をJSON形式の文字列に変換、つまり'"に変えるには、json.dumps()を使います。

さらに、Python上で、JSON形式の文字列を辞書型に変換する場合は、json.loads()を使います。

よくわからないかもしれないので、コードを書いてコンソールに出力してみましょう。

import json

with open('test.json', 'r') as f:
    a = json.load(f)
    b = json.dumps(a)
    c = json.loads(b)
    print(a)
    print(b)
    print(c)

出力結果

[{'Id': 1, 'Name': 'MasterU'}, {'Id': 2, 'Name': 'Mark'}]
[{"Id": 1, "Name": "MasterU"}, {"Id": 2, "Name": "Mark"}]
[{'Id': 1, 'Name': 'MasterU'}, {'Id': 2, 'Name': 'Mark'}]

sが付いているか付いていないかでエラーが起こったりするので、ちょっとややこしいですね。

実際に自分でコードを試してみてください。

どっちが使いやすい?

XMLとJSONのどちらが使いやすいかと聞かれると、やはりJSONのほうがつい書いやすそうな気がします。

なんと言ってもコードが短くてすみますし、読み方もジェイソンなので、パイソンみたいでなんとなく響きがいい感じがします。

とはいえ、XMLも必要なフォーマットには違いないので、両方とも学習しつつ、理解を深めていこうと思います。

それでは明日もGood Python!