ホームページ >バックエンド開発 >Python チュートリアル >Python を使用して JSON データを処理する方法

Python を使用して JSON データを処理する方法

青灯夜游
青灯夜游オリジナル
2018-11-14 14:37:503355ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。