json.dumps參數(shù)之解

通過help(“json”) 可以參考json庫使用說明

編碼后的json格式字符串緊湊輸出,且無順序,其dumps方法提供一些可選的參數(shù),讓輸出的格式提高可讀性。
(1)sort_keys是告訴編碼器按照字典key排序(a到z)輸出。

>>> import json
>>> data = [{'c': 'C', 'b':(1, 6), 'a': 'A'}]
>>> print(data)
[{'a': 'A', 'c': 'C', 'b': (1, 6)}]
>>> print(json.dumps(data,sort_keys=True))
[{"a": "A", "b": [1, 6], "c": "C"}]

(2)indent參數(shù)根據(jù)數(shù)據(jù)格式縮進顯示,讀起來更加清晰, indent的值,代表縮進空格式:

>>> print(json.dumps(data,sort_keys=True))
[{"a": "A", "b": [1, 6], "c": "C"}]
>>> print(json.dumps(data,sort_keys=True,indent=4))
[
    {
        "a": "A", 
        "b": [
            1, 
            6
        ], 
        "c": "C"
    }
]

(3)separators參數(shù)的作用是去掉‘,’ ‘:’后面的空格,在傳輸數(shù)據(jù)的過程中,越精簡越好,冗余的東西全部去掉。

>>> print(json.dumps(data,sort_keys=True))
[{"a": "A", "b": [1, 6], "c": "C"}]
>>> print(json.dumps(data,sort_keys=True,separators=(',',':')))
[{"a":"A","b":[1,6],"c":"C"}]

(4)skipkeys參數(shù),在encoding過程中,dict對象的key只可以是string對象,如果是其他類型,那么在編碼過程中就會拋出ValueError的異常。skipkeys可以跳過那些非string對象當(dāng)作key的處理.

>>> data2 = [{"a": "A", "b": [1,6], "c": "C", ('d',): 'D'}]
>>> print(json.dumps(data2,sort_keys=True,separators=(',',':')))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/json/__init__.py", line 237, in dumps
    **kw).encode(obj)
  File "/usr/lib64/python2.6/json/encoder.py", line 367, in encode
    chunks = list(self.iterencode(o))
  File "/usr/lib64/python2.6/json/encoder.py", line 306, in _iterencode
    for chunk in self._iterencode_list(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 204, in _iterencode_list
    for chunk in self._iterencode(value, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 309, in _iterencode
    for chunk in self._iterencode_dict(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 268, in _iterencode_dict
    raise TypeError("key {0!r} is not a string".format(key))
TypeError: key ('d',) is not a string

>>> print(json.dumps(data2,sort_keys=True,skipkeys=True))
[{"a": "A", "b": [1, 6], "c": "C"}]

(5)輸出真正的中文需要指定ensure_ascii=False

如果無任何配置,或者說使用默認(rèn)配置,
輸出的會是‘涼涼’的ASCII字符嗎,而不是真正的中文。
這是因為json.dumps 序列化時對中文默認(rèn)使用的ascii編碼。

>>> print(json.dumps('中國'))
"\u4e2d\u56fd"
>>> print(json.dumps('中國',ensure_ascii=False))
"中國"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,291評論 2 89
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,306評論 0 15
  • 文章圖片上傳不正常,如需文檔,可聯(lián)系微信:1017429387 目錄 1 安裝... 4 1.1 配置探針... ...
    Mrhappy_a7eb閱讀 6,919評論 0 5
  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,333評論 0 5
  • 初冬時節(jié)的清晨 是冷冽的寒風(fēng)做客的時刻 它帶著清脆的呼喊聲 用它冷而涼的身體擁抱著大地 好似不這般就無法體現(xiàn)它對大...
    那花評書閱讀 795評論 1 13

友情鏈接更多精彩內(nèi)容