JSONについて
JSON(JavaScript Object Notation)は、キーと値のペアを使用してデータを格納および交換するファイル形式およびデータストレージ標準です。これは最も広く使用されているデータ交換形式であり、RESTful API、軽量データベース、構成ファイル、およびデータの保存、取得、交換が必要なその他のオフラインまたはオンラインソフトウェアでよく見られます。ほとんどのプログラミング言語には、デフォルトでJSONデータを解析および書き込むためのライブラリが含まれており、JSONはプログラミング言語に依存しないデータ形式です。 JSONファイルまたはペイロードに格納される値には、通常、文字列、数値、およびリスト(配列)などのシリアル化可能なデータ型が含まれます。
JSONおよびPython辞書
PythonのJSONデータは、loadメソッドを使用して辞書オブジェクトに変換されます。両方を定義する構文がほぼ同じであるため、jsonデータとpython辞書を同一視する人がよく見られます。ただし、jsonデータは厳密な構文で構造化されたテキスト文字列にすぎませんが、Python辞書はメモリに格納されたデータ構造オブジェクトです。辞書データをテキストファイルに保存したり、Python以外の別のプログラムに送信したりする場合は、最初にテキスト文字列(バイト)に変換する必要があります。このダンプ/変換されたテキスト文字列はJSONの標準構文で定義されており、Python辞書をjson互換の文字列に変換するプロセスはシリアル化と呼ばれます。
PythonでのJSONデータの読み取りとダンプ
JSONデータは、サーバーからの応答として取得したり、ファイルから読み取ったり、URLクエリパラメーターからスライスしたりすることができます。この記事では、主にローカルに保存されたファイルからjsonデータを読み取ることに焦点を当てます。 test.jsonファイルに次のデータが含まれていると仮定します。
{'コードネーム': 'Eoan Ermine'、 'バージョン': 'Ubuntu 19.10'}
Pythonでtest.jsonファイルを読み取るには、次のコードを使用できます。
輸入json
と 開いた (('test.json')。 なのでNS:
データ=json。ロード((NS)。
ごみ=json。ダンプ((データ)。
印刷 ((データ)。
印刷 ((タイプ((データ)。)。
印刷 ((ごみ)。
印刷 ((タイプ((ごみ)。)。
上記のコードの最初の行は、jsonモジュールをインポートします。次の行では、ファイルの内容を安全に読み取るために、withopenが使用されています。 with openブロック内では、json.loadメソッドを使用して、ファイルの内容を読み取り、データ変数に格納します。前のステップでロードされたデータは、json.dumpメソッドを使用してjson文字列に変換されます。上記のコードを実行すると、次の出力が表示されます。
{{'コード名':「EoanErmine」、 'バージョン':「Ubuntu19.10」}<クラス 'dict'>>
{{'コード名':「EoanErmine」、 'バージョン':「Ubuntu19.10」}
<クラス 'str'>>
上記の出力では、json.loadメソッドが生のjsonデータをPython辞書に読み込み、json.dumpsメソッドが辞書をJSON構造と互換性のある文字列に変換することに注意してください。 JSONオブジェクトがPythonディクショナリオブジェクトに変換されると、組み込みのPythonディクショナリメソッドを使用してデータを処理できます。上記の例は非常に基本的なものであり、JSONデータまたはネストされた値に配列が含まれていません。ただし、Python内では、他のネストされた辞書やリストと同じようにこれらの値を処理できます。
JSONデータの並べ替えときれいな印刷
json.dumpメソッドは、キーを並べ替え、読みやすさを向上させるために出力をきれいに印刷するためのいくつかのオプションのパラメーターをサポートしています。
輸入jsonと 開いた (('test.json')。 なのでNS:
データ=json。ロード((NS)。
ごみ=json。ダンプ((データ、sort_keys=NS、インデント=4)。
印刷 ((ごみ)。
上記のコードは、次の出力を示します。
{{'コードネーム': 'Eoan Ermine'、
'バージョン': 'Ubuntu 19.10'
}
データ型変換
以下のリストは、JSON値がPythonオブジェクトに変換される方法とその逆の方法を示しています。
JSON | Python |
ストリング | NS |
番号 | intまたはfloat |
真/偽 | 真/偽 |
ヌル | なし |
配列 | リスト |
物体 | dict |
Json.toolコマンドラインモジュール
Pythonには、JSON文字列とファイルを検証してきれいに印刷するために使用できる優れたコマンドラインユーティリティjson.toolが含まれています。
$エコー'{'コードネーム ':' Eoan Ermine '、'バージョン ':' Ubuntu 19.10 '}'| python3 -mjson。道具上記のコマンドを実行すると、次の出力が表示されます。
{{'コードネーム': 'Eoan Ermine'、
'バージョン': 'Ubuntu 19.10'
}
JSONファイルでjson.toolを使用することもできます。以下のコマンドのin_fileとout_fileを目的の値に置き換えます。
$ python3 -mjson。道具in_file out_fileJSONデータのきれいな印刷、並べ替え、検証以外は、json.toolは何もしません。したがって、JSONデータを操作する場合は、組み込みのJSONモジュールを使用して独自のカスタムコードを作成する必要があります。