高度なPython開発コース
チャプター
>
レベル
シリアライゼーションモジュール
JSON モジュール
目的
サービスステーションに行き、JSONモジュールを使用してファイルをフォーマットし、データが正しく保存されていることを確認する。
新築エリアの別館建物の南側にサービスステーションがあります。この一帯は作物を植えるために再開発される予定です。ステーションには新開発のデータを処理する様々なターミナルがあり、データを手動で入力することもできますが、非常に時間がかかってしまいます。データを扱う際にはJSON(JavaScript Object Notation)を使用できます。JSONはプログラミング言語に依存しないデータフォーマットであり、データの保存や送信を容易に読み書きできる形式です。
JSONをPythonで使用するにはimport jsonを行い、JSON関数にアクセスします。本演習では以下の関数を使用します:
json.loads(): JSON文字列をPythonのデータに変換します。引数は解析したい文字列のみです。json.dumps(): PythonのデータをJSON文字列オブジェクトに変換します。この関数は最大4つの引数を取ることができますが、必須なのは最初の引数のみです。引数は以下のとおりです。- JSONに変換したいPythonのデータ(辞書、リスト、タプル、文字列、整数、浮動小数点数、ブール値、Noneなど)
indent: データの各要素の先頭に追加するスペース数separators: データ要素の間および末尾に表示する区切り文字sort_keys: 辞書をJSONに変換する際にキーをアルファベット順にソートするかどうか
まず、左側の前哨基地にある金色のXマークに向かい、メモがある机に向かいます。read()関数を使って端末の状態を確認するために必要な情報を取得し、メモします。次に、端末の前にある薄いXマークに移動し、transmissionという定数を見つけます。これをJSON形式にフォーマットするためにjson.dumps()を使用し、以下のようにします: transmission = json.dumps(transmission)。
loadという名前の辞書を作成し、引数にtransmission定数を渡したjson.loads()の返り値を格納します。これによりJSONがPythonのデータに変換され、情報へ簡単にアクセスできるようになります。メモに記載されているキーを使い、作成したload辞書とともにspeak()関数を使用します。例えば: player.speak(load["system"]) のように、すべてのキーについて実行してください。
端末の情報を確認したらステーションへ向かい、建物内に入り、緑色のカーペット上の薄いXマークに進みます。read()関数でメモを確認し、値をメモします。エディタにはprofileという名前のあらかじめ記述された辞書があるので、メモの情報を使って不足している値を入力してください。
緑色のカーペット上の暗いXマークに進み、端末に向かいます。transferという名前の変数を作成し、引数にprofile辞書を渡したjson.dumps()の返り値を格納します。これにより辞書がJSON文字列オブジェクトに変換されます。あらかじめ用意されたdisplay()関数を使用し、transferのJSONを渡して端末にデータを保存してください。
赤色のカーペット上の暗いXマークに進み、read()関数を使用して端末にすでに入力されているデータを確認します。データは適切なフォーマットになっていないため、JSONとして正しく保存・フォーマットする必要があります。データはred_dataという定数の辞書に格納されているので、red_storageという名前の変数を作成し、json.dumps()の返り値を格納してください。
データをフォーマットするには、json.dumps()に以下の引数を追加します: 定数をJSONに変換するためにred_dataを渡し、テキストをフォーマットするためにindentを5に設定し、各行の末尾に記号を追加するためにseparatorsを("- ", " = ")に設定します。行は次のようになります: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = "))。あらかじめ用意されたdisplay()を使用し、red_storageのJSON文字列を渡してフォーマット済みのデータを保存・表示してください。
青色のカーペット上の暗いXマークに進み、端末に向かってread()関数を使用します。以前と同様にデータは正しく保存されておらず、フォーマットおよびソートが必要です。データはblue_dataという定数に格納されています。blue_storageという名前の変数を作成し、json.dumps()の返り値を格納してください。
引数として: 定数をJSONに変換するためにblue_dataを渡し、テキストをフォーマットするためにindentを4に設定し、各行の末尾に記号を追加するためにseparatorsを(".0", " = ")に設定します。さらに、最後の引数としてsort_keys=Trueを追加します。例: sort_keys=True。あらかじめ用意されたdisplay()を使用し、blue_storageのJSON文字列を渡してソート済みのデータを保存・表示し、レベルを完了してください。