python中的json模塊介紹

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,其最廣泛的應用是作爲AJAX中web服務器和客戶端的通訊的數據格式。json類似於xml,但比 XML 更小、更快,更易解析。

簡單來講,json的格式與python種的字典和列表及其二者的組合類似。如下面的一個json格式的數據(引自百度百科):

{
    "programmers": [{
        "firstName": "Brett",
        "lastName": "McLaughlin",
        "email": "aaaa"
    }, {
        "firstName": "Jason",
        "lastName": "Hunter",
        "email": "bbbb"
    }, {
        "firstName": "Elliotte",
        "lastName": "Harold",
        "email": "cccc"
    }],
    "authors": [{
        "firstName": "Isaac",
        "lastName": "Asimov",
        "genre": "sciencefiction"
    }, {
        "firstName": "Tad",
        "lastName": "Williams",
        "genre": "fantasy"
    }, {
        "firstName": "Frank",
        "lastName": "Peretti",
        "genre": "christianfiction"
    }]
}

Python2.6 以上版本的標準庫json支持Json的編碼和解碼,支持python的大部分內置類型與Json進行轉換。

編碼是把python對象轉換成json對象,通過josn.dump()、josn.dumps()實現。兩個函數的唯一區別就是dump把python對象轉換成json對象生成一個fp的文件流,而dumps則是生成了一個字符串。

以dumps爲例:

json.dumps(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

其中常用的參數及其含義如下:Skipkeys:默認值是False,如果dict的keys內的數據不是python的基本類型(str,unicode,int,long,float,bool,None),設置爲False時,就會報TypeError的錯誤。此時設置成True,則會跳過這類key
ensure_ascii:默認值True,如果dict內含有non-ASCII的字符,則會類似\uXXXX的顯示數據,設置成False後,就能正常顯示
indent:應該是一個非負的整型,如果是0,或者爲空,則一行顯示數據,否則會換行且按照indent的數量顯示前面的空白,這樣打印出來的json數據也叫pretty-printed json
separators:分隔符,實際上是(item_separator, dict_separator)的一個元組,默認的就是(',',':');這表示dictionary內keys之間用“,”隔開,而KEY和value之間用“:”隔開。
encoding:默認是UTF-8,設置json數據的編碼方式。
sort_keys:將數據根據keys的值進行排序。

解碼是把json對象轉換成python對象的一個過程,常用的兩個函數是loads和load函數。區別跟dump和dumps是一樣的。

附:python-json參考手冊地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章