1、json字串轉為字典
json.load / json.loads
兩個方法功能類似,可選引數也相同,最大的區別在於,json.load方法接受的輸入,即第乙個引數,是包含json資料的檔案物件,如open方法的返回物件,
json.loads接受的輸入是json字串,而非檔案物件。從輸入型別的區別也可以看出兩者的使用場合。
可選引數包括是否需要轉換整型、浮點型等數值的引數,還有一些複雜的功能。
2、字典轉換為json
json.dump / json.dumps
對應於load和loads,dump的第乙個引數是物件字典,第二個引數是檔案物件,可以直接將轉換後的json資料寫入檔案,dumps的第乙個引數是物件字典,其餘都是可選引數。dump和dumps的可選引數相同,這些引數都相當實用,現將用到的引數記錄如下:
ensure_ascii 預設為true,保證轉換後的json字串中全部是ascii字元,非ascii字元都會被轉義。如果資料中存在中文或其他非ascii字元,最好將ensure_ascii設定為false,保證輸出結果正常。
indent 縮排,預設為none,沒有縮排,設定為正整數時,輸出的格式將按照indent指定的半形空格數縮排,相當實用。
separators 設定分隔符,預設的分隔符是(',', ': '),如果需要自定義json中的分隔符,例如調整冒號前後的空格數,可以按照(item_separator, key_separator)的形式設定。
sort_keys 預設為false,設為true時,輸出結果將按照字典中的key排序。
>>> import json
>>> a = {}
>>> a['1'] = 2
>>> a['ad'] = 'ertwer'
>>> a['02'] = 'oierte'
>>> a[2] = [1, 'a']
>>> a['non_ascii'] = "青團 》 熊貓 ?"
>>> a['ss'] = a.copy()
>>> print(json.dumps(a)) # 預設引數輸出,無縮排,中文字元都被轉義
, "1": 2, "ad": "ertwer", "non_ascii": "\u9752\u56e2 \u300b \u718a\u732b \uff1f"}
>>>
>>> print(json.dumps(a, ensure_ascii=false, indent=4)) # 四空格縮排,中文字元全部正常
, "1": 2,
"ad": "ertwer",
"non_ascii": "青團 》 熊貓 ?"
}>>>
參考資料:
JSON相關知識整理
json 全稱 j ascript object notation 一種輕量級的資料交換格式 示例 second 四個基本規則 1 並列的資料之間用逗號 分隔。2 對映用冒號 表示。3 並列資料的集合 陣列 用方括號 表示。4 對映的集合 物件 用大括號 表示。優點 1 資料格式較簡單,易於讀寫,格...
JSON知識總結
什麼是json json j ascript物件表示法 j ascript object notation json是儲存和交換文字資訊的語法。類似 xml。json比xml更小 更快,更易解析。json是輕量級的文字資料交換格式 json獨立於語言,json使用j ascript語法來描述資料物件...
json的簡單知識
用json傳送資料 如int intjble string 這裡是封裝並傳送 方法略顯笨拙 test public void jsonsendarray jsonobject clientkey new jsonobject jsonarray jsonarray new jsonarray 儲存陣...