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