json知識整理

2021-07-31 23:34:40 字數 1360 閱讀 9327

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 儲存陣...