Python を使用して JSON データを処理するにはどうすればよいですか?この記事では、Python を使用して JSON データを処理する基本的な方法を紹介します。一定の参考値があるので、困っている友達は参考にしていただければ幸いです。
Python を使用して JSON データを処理する基本的な方法を紹介する前に、まず JSON とは何ですか?
JSON とは「JavaScript Object Notation」の略で、「JavaScript 言語の記号をベースにしたデータ形式」と言えます。ただし、この表記は JavaScript にのみ基づいており、他のさまざまな言語でも使用できます。
JSON はデータを保存および交換する方法であり、その構文を通じて実装され、多くの Web アプリケーションで使用されます。 JSON の利点は、人間が判読できる形式であることです。これが、API を使用するときの有効性に加えて、データ転送に JSON を使用する理由の 1 つである可能性があります。
JSON では、データは名前と値のペアで表されます。オブジェクトは中括弧内に格納され、各名前の後に「:」 (コロン) が続き、名前と値のペアは (カンマ) で区切られます。角かっこで配列を囲み、値を (カンマ) で区切ります。
JSON 形式データの例:
{ "book1":{ "title": "Python Beginners", "year": 2005 , "page": 399 }, "book2":{ "title": "Python Developers", "year": 2006 , "page": 650 } }
Python で JSON データを処理する方法を詳しく見てみましょう。
Python を使用すると、JSON データの処理が簡単になります。これを実現するモジュールが json モジュールです。このモジュールは Python (組み込み) インストールに含まれている必要があるため、PDF や Excel ファイルの場合のように外部モジュールをインストールする必要はありません。このモジュールを使用するには、インポートするだけです (まず次のように記述します):
import json
しかし、JSON ライブラリは何をするのでしょうか?このライブラリは主にファイルまたは文字列から JSON を解析します。また、JSON を Python の辞書またはリストに解析したり、その逆も行います。つまり、Python の辞書またはリストを JSON 文字列に変換します。
JSON の読み取り (JSON から Python)
JSON の読み取りとは、JSON を Python 値 (オブジェクト) に変換することを意味します。上で述べたように、json ライブラリは JSON を解析して Python の辞書またはリストを作成します。このために、以下に示すように、loads() 関数 (文字列からロード) を使用します。
import json jsonData = '{"name": "Frank", "age": 39}' jsonToPython = json.loads(jsonData)
出力を確認したい場合は、 print jsonToPython を実行します。この場合、次の出力が得られます。
{'age': 39, 'name': 'Frank'}
つまり、データは Python 辞書 (JSON オブジェクト データ構造) として返されます。
Python から JSON
前のセクションでは JSON を Python に紹介しましたが、このセクションでは Python の値を変換する方法を示します (エンコードされます)を JSON として保存します。
Python に次の辞書があるとします。
import json pythonDictionary = {'name':'Bob', 'age':44, 'isEmployed':True} dictionaryToJson = json.dumps(pythonDictionary)
printdictionToJson を実行すると、次の JSON データが得られます。
{"age": 44, "isEmployed": true, "name": "Bob"}
したがって、この出力はオブジェクト (辞書) データ表現。メソッド dumps() は、このタイプの操作の鍵です。
現時点では、JSON はすべてのタイプの Python オブジェクトを保存できるわけではなく、リスト、辞書、ブール値、数値、文字列、なしのタイプのみを保存できることに注意してください。したがって、他の型は JSON に保存するために変換する必要があります。
次のクラスがあるとします:
class Employee(object): def __init__(self, name): self.name = name
次のように新しいオブジェクト abder を作成するとします:
abder = Employee('Abder')
このオブジェクトを JSON に変換する場合、何を変換するかする?それは json.dumps(abder) ですか?この場合、次のようなエラーが表示されます:
Traceback (most recent call last): File "test.py", line 8, in <module> abderJson = json.dumps(abder) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps return _default_encoder.encode(obj) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode chunks = self.iterencode(o, _one_shot=True) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode return _iterencode(o, 0) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: <__main__.Employee object at 0x10e74b750> is not JSON serializable
しかし、回避策はありますか?幸いなことに、それはあります。この問題を解決するには、次のようなメソッドを定義します。
def jsonDefault(object): return object.__dict__
次に、次のようにオブジェクトを JSON にエンコードします。
jsonAbder = json.dumps(abder, default=jsonDefault)
print jsonAbder を実行すると、次の出力が得られます。 :
{"name": "Abder"}
これで、Python オブジェクト (abder) が JSON にエンコードされました。
以上がPython を使用して JSON データを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。