Json は、軽量で読み書きが容易であるという特徴により、インターネットで広く使用されているデータ交換構造です。以下の記事ではPythonによるJson解析に関する情報を中心に紹介していますので、困っている方はぜひ参考にしてみてください。
JSON の概要
JSON (JavaScript Object Notation) は軽量のデータ交換形式です。これは、JavaScript のサブセット (標準 ECMA-262 第 3 版 - 1999 年 12 月) に基づいています。 JSON は完全に言語に依存しないテキスト形式を使用しますが、C 言語ファミリー (C、C++、C#、Java、JavaScript、Perl、Python など) に似た規則も使用します。これらの特性により、JSON は理想的なデータ交換言語になります。人間にとっては読み書きが簡単で、機械にとっては解析と生成が簡単です。
その形式は一般に次のとおりです:
オブジェクトは、「名前と値のペア」の順序付けされていないコレクションです。オブジェクトは「{」(左括弧)で始まり「}」(右括弧)で終わります。各「名前」の後には「:」 (コロン) が続き、「名前と値」のペアは「,」 (カンマ) で区切られます。
例:
{"b": "Hello", "c": null, "a": true}
その値は、文字列、数値、true、false、null、オブジェクト、または二重引用符で囲まれた配列 (配列) にすることができます。これらの構造は入れ子にすることができます。
値には、文字列、数値、true、false、null、オブジェクト、または二重引用符で囲まれた配列を指定できます。これらの構造は入れ子にすることができます。
Python を使用して Json をエンコードおよび解析する
Python には、json 操作を完了するのに役立つ組み込みの json パッケージがあります。
Python の辞書構造を json にエクスポートするには、json.dumps()
を使用します。json を Python の辞書構造に読み取るには、json.loads()
を使用します。 json.dumps()
,将json读成Python的字典结构,使用json.loads()
。
如果不是针对string操作而是对文件操作,分别使用json.load()
函数和json.dump()
函数。
import json data = { 'name' : 'ACME', 'shares' : 100, 'price' : 542.23 } json_str = json.dumps(data) data = json.loads(json_str) # Writing JSON data to file with open('data.json', 'w') as f: json.dump(data, f) # Reading data back with open('data.json', 'r') as f: data = json.load(f)
默认的类型对应如下:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
其他数据类型与Json之间的编码和解码
一般来说,Python对json的解析是list或dict之间的操作,如果需要其他类型与json之间转换,就需要object_hook参数。先定义一个类,将类的字典初始化成json的key-value键值对。这样,json的参数就变成了类的属性。
将一个JSON字典转换为一个Python对象Python
>>> class JSONObject: ... def __init__(self, d): ... self.__dict__ = d ... >>> >>> data = json.loads(s, object_hook=JSONObject) >>> data.name 'ACME' >>> data.shares 50 >>> data.price 490.1
还可以通过指定“函数”来进行转换。
用函数来指定序列化的方法,即将对象的“属性-值”对变成字典对,函数返回一个字典,然后json.dumps
会格式化这个字典。
如果是通过函数将json变成对象,首先获得类名,然后通过__new__
json.load()
関数と json.dump()
関数を使用します。 def serialize_instance(obj): d = { '__classname__' : type(obj).__name__ } d.update(vars(obj)) return d # Dictionary mapping names to known classes classes = { 'Point' : Point } def unserialize_object(d): clsname = d.pop('__classname__', None) if clsname: cls = classes[clsname] obj = cls.__new__(cls) # Make instance without calling __init__ for key, value in d.items(): setattr(obj, key, value) return obj else: return d
デフォルトのタイプは以下に対応します:
JSON | Python |
---|---|
object | dict |
array | リスト |
文字列 | unicode |
数値 (int) td> | int、long |
数値 (実数) | float |
true | True |
false | False |
null | なし
他のデータ型と Json の間のエンコードとデコード
>>> p = Point(2,3) >>> s = json.dumps(p, default=serialize_instance) >>> s '{"__classname__": "Point", "y": 3, "x": 2}' >>> a = json.loads(s, object_hook=unserialize_object) >>> a <__main__.Point object at 0x1017577d0> >>> a.x 2 >>> a.y 3関数を使用してシリアル化方法を指定します。つまり、オブジェクトの「属性と値」のペアを辞書のペアに変換します。関数は辞書を返し、
json.dumps
によってフォーマットされます。辞書。
関数を使用して json をオブジェクトに変換する場合は、まずクラス名を取得し、次に __new__
を通じて (初期化関数を呼び出さずに) オブジェクトを作成し、次に json 辞書の各属性を割り当てます。オブジェクトに。
Pythonのjson変換方法を指定する関数を使用します
rrreee🎜🎜🎜🎜🎜使用方法は以下の通りです: 🎜🎜🎜🎜🎜rrreee🎜🎜🎜🎜 🎜 🎜詳しい説明PythonによるJSONの解析🎜🎜🎜 🎜PythonによるJson文字列の判定方法の例🎜🎜🎜🎜 Pythonによるjsonの動作概要を深く理解する🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜
以上がPython による Json_python の解析についての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。