python 3のjsonモジュール使用
3884 ワード
1.jsonモジュールの紹介
jsonはpythonが持参した操作jsonのモジュールです.
pythonがjsonにシーケンス化されたときのデータ型変換関係:
python形式
jsonフォーマット
dict(複合タイプ)
object
List,tuple(コレクションタイプ)
array
int,long,float(数値タイプ)
number
str, unicode
string
True
true
False
false
None
null
json逆シーケンス化pythonデータ型対照関係:
jsonフォーマット
python形式
object
dict
array
list
string
unicode
number(int)
int, long
numer(real)
float
true
True
false
False
null
None
2.使用方法
jsonライブラリにはいくつかのAPIがあります.
json.dumps():辞書をjson文字列にシーケンス化する
json.loads():json文字列を辞書に逆シーケンス化
json.dump():辞書を1つのファイルにシーケンス化します.テキストファイルです.シーケンス化されたjson文字列を1つのファイルに書き込むことに相当します.
json.load():ファイルから辞書を逆順にリストする
まとめ:sを持たないのはシーケンスからファイルへまたはファイルから逆シーケンス化であり、sを持つのはすべてメモリで操作して永続化に関与しない
簡単な使用例は次のとおりです.
#! /usr/bin/python
import json
if __name__ == '__main__':
cc = {
"name": "CC11001100",
"age": 22,
"money": 9.9,
"car": "Feng-Huang Bicycle",
"house": " ",
"girl friend": None,
"hobby": "thinking..."
}
#
json_string = json.dumps(cc)
print(json_string)
#
json_dict = json.loads(json_string)
print(json_dict)
#
with open('D:/cc.json', 'w') as json_file:
json.dump(cc, json_file)
#
with open('D:/cc.json', 'r') as json_file:
json_dict = json.load(json_file)
print(json_dict)
pyオブジェクトがjsonにシーケンス化されるときに受け入れられるいくつかのパラメータ:
indent:すなわち、インデント量はいくつかのスペースであり、出力をフォーマットする必要がある場合は一般的に4つのスペースに設定されます.
indentを指定する小さな例:
#! /usr/bin/python
import json
if __name__ == '__main__':
cc = {
"name": "CC11001100",
"age": 22,
"money": 9.9,
"car": "Feng-Huang Bicycle",
"house": " ",
"girl friend": None,
"hobby": "thinking..."
}
print(json.dumps(cc, indent=4))
出力:
{
"name": "CC11001100",
"age": 22,
"money": 9.9,
"car": "Feng-Huang Bicycle",
"house": "\u7956\u5b85",
"girl friend": null,
"hobby": "thinking..."
}
separators:生成されたjsonサブ列で使用される区切り記号は、複数のk/vペアを区切る代わりに、k/vを区切るために使用されます.
separatorsを指定する小さな例です.
#! /usr/bin/python
import json
if __name__ == '__main__':
cc = {
"name": "CC11001100",
"age": 22,
"money": 9.9,
"car": "Feng-Huang Bicycle",
"house": " ",
"girl friend": None,
"hobby": "thinking..."
}
print(json.dumps(cc, indent=4, separators=('↓', '→')))
出力:
{
"name"→"CC11001100"↓
"age"→22↓
"money"→9.9↓
"car"→"Feng-Huang Bicycle"↓
"house"→"\u7956\u5b85"↓
"girl friend"→null↓
"hobby"→"thinking..."
}
sort_keys:keyをソートするかどうかは、まだ何の役にも立たない.
3.jsonモジュール付きの限界
独自のjsonモジュールを使用するのは便利ですが、カスタムタイプをシーケンス化するとTypeErrorの異常が放出されます.
TypeError: Object of type 'Person' is not JSON serializable
カスタムタイプのシーケンス化では、サードパーティ製ライブラリが一般的ですが、これは別の内容です.
参考資料:
1. https://docs.python.org/2/library/json.html
転載先:https://www.cnblogs.com/cc11001100/p/7630429.html