python3 json模組
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(): 將字典序列化到一個檔案,是文字檔案,就是相當於將序列化後的json字串寫入到一個檔案
json.load(): 從檔案中反序列出字典
總結: 不帶s的是序列到檔案或者從檔案中反序列化,帶s的是都在記憶體中操作不涉及到持久化
一個簡單使用的例子如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
json
|
py物件序列化為json的時候會接受的幾個引數:
indent: 即縮排量是幾個空格,當需要格式化輸出的時候一般設為4個空格
一個指定indent的小例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
輸出:
1 2 3 4 5 6 7 8 9 |
|
separators: 生成的json子串所使用的分隔符,就是用來代替分隔多個k/v對的,和分隔k/v的:
一個指定了separators的小例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
輸出:
1 2 3 4 5 6 7 8 9 |
|
sort_keys:是否對key進行排序,目前還沒感覺出有啥用
3. 自帶json模組的侷限性
使用自帶的json模組雖然很方便,但是序列化自定義型別的時候就會丟擲一個TypeError的異常:
1 |
|
對於自定義型別的序列化,一般都是使用第三方庫,當然這個是另外的內容了。
參考資料: