Select Language

AI Technology Community

5.14、Python jsonモジュール:jsonファイルを処理する

JSON(JavaScript Object Notation)形式のファイルは、コンピュータプログラム間でデータを交換する際によく使われます。YAMLとは異なり、この形式では、要素の境界をわかりやすいインデントで区切るのではなく、「{}」「[]」「,」「:」などの特殊文字を使ってフィールドの区切りを示します。

YAMLと同様に、JSONにも以下の3種類のデータ型があります:

1) オブジェクト:Pythonの辞書に相当します。以下は例です:

{1: 12, 2: 22}


2) 配列:Pythonのリストに相当します。以下は例です:

[1, 2, 3, 4]


3) スカラー:Pythonの文字列、整数、浮動小数点数、true、false、nullなどに相当します。

このセクションで紹介するJSONモジュールはPythonに標準搭載されているので、インストールする必要はありません。ただし、使用する前に以下のようにインポートする必要があります:

import json

このモジュールは主に2つの機能を提供します。1つはJSON文字列からPythonオブジェクトへの変換、もう1つはPythonオブジェクトからJSON文字列への変換です。まずはPythonオブジェクトをJSON文字列に変換する機能を見てみましょう。

Pythonオブジェクトを文字列に変換する基本的な関数はdumps()です。この関数はPythonオブジェクトを受け取り、JSON形式の文字列を出力します。以下はこの関数の使用例です:

>>> import json                     # JSONモジュールをインポート
>>> obj = ["a", "b", 12, 24.6]      # 入力のPythonオブジェクト(リスト)
>>> out = json.dumps(obj)           # dumps()関数を呼び出す
>>> type(out)                       # 出力は文字列
<class 'str'>
>>> out                             # 出力内容
'["a", "b", 12, 24.6]'

dumps()関数の他に、似た関数としてdump()があります。この関数は出力を直接ファイルに書き込みます。2番目の引数はファイルオブジェクトで、出力内容がこのファイルオブジェクトに書き込まれます。以下はこの関数の使用例です:

import json
fd = open("writeJsonDemo2.json", "w")   # ファイルを開く
obj = ["a", "b", 12, 24.6]
out = json.dump(obj, fd)                # Pythonオブジェクトを変換してファイルに書き込む
fd.close()                              # ファイルを閉じる

このスクリプトを実行した後の出力は以下の通りです:

$ python writeJsonDemo2.py              # スクリプトを実行
$ cat writeJsonDemo2.json               # 出力ファイルの内容を表示
["a", "b", 12, 24.6]


次に、JSON文字列をPythonオブジェクトに変換する方法を説明します。YAMLと同様に、JSONモジュールも2つの関数を提供しています。1つは文字列を入力とするもの、もう1つはファイルオブジェクトを入力とするものです。まずは文字列を入力とするloads()関数を紹介します。この関数は文字列の入力を受け取り、Pythonオブジェクトを出力します。

>>> import json                             # JSONモジュールをインポート
>>> out = json.loads('["item1", {"key1": ["item2", null, 1.0, 2]}]')   # 文字列を変換
>>> type(out)                               # 出力オブジェクトはリスト
<class 'list'>
>>> out                                     # 出力オブジェクトの内容
['item1', {'key1': ['item2', None, 1.0, 2]}]


ファイルオブジェクトを入力とする関数はload()です。この関数はファイルオブジェクトを引数として受け取り、Pythonオブジェクトを返します。以下のコードはこの関数の使用例を示しています:

import json                             # JSONモジュールをインポート
fd = open("writeJsonDemo2.json", "r")   # 入力ファイルを開く
out = json.load(fd)                     # ファイル内容を変換
fd.close()                              # ファイルを閉じる
print("Type: %s" % type(out))           # 返されたオブジェクトの型を確認
print(out)                              # 返されたオブジェクトの内容を確認

このスクリプトを実行した後の出力は以下の通りです:

$ cat writeJsonDemo2.json               # 入力ファイルの内容を表示
["a", "b", 12, 24.6]
$ python jsonReadDemo1.py               # スクリプトを実行
Type: <class 'list'>
['a', 'b', 12, 24.6]


post
  • 14

    item of content
データを長期的に保存したい場合、最も簡単な方法はデータをディスクファイルに書き込むことです。これにより、プログラムを終了した後でも処理結果は長期的に有効です。
大規模ソフトウェアプロジェクトでは、ファイル操作は避けられません。この章では、普通のテキストファイルとバイナリファイルの操作方法について説明します。具体的には、ファイルを開く方法、ファイルの読み書き、ファイルモード、および with 文の使用方法などを含みます。