json 概念:json是一種輕量級數據交換格式。 如果我們要在不同的編程語言之間傳遞對象,就必須把對象序列化為標準格式,比如XML,但更好的方法是序列化為JSON,因為JSON表示出來就是一個字元串,可以被所有語言讀取,也可以方便地存儲到磁碟或者通過網路傳輸。JSON不僅是標準格式,並且比XML更 ...
json
概念:json是一種輕量級數據交換格式。
如果我們要在不同的編程語言之間傳遞對象,就必須把對象序列化為標準格式,比如XML,但更好的方法是序列化為JSON,因為JSON表示出來就是一個字元串,可以被所有語言讀取,也可以方便地存儲到磁碟或者通過網路傳輸。JSON不僅是標準格式,並且比XML更快,而且可以直接在Web頁面中讀取,非常方便。
格式:一個無序的‘名稱’/‘值’集合。{名稱1/值,名稱2/值……}。
說明:你可能會想起這種格式在哪見過,沒錯。在python中字典也有著類似的可以key:value結構。但是不能混為一談。
- JSON 的 key 只能是字元串,Python 的 dict 可以是任何可 hash 對象
- JSON 的 key 可以是有序的
- JSON 的 key 可以重覆
- JSON 的值只能是字元串、浮點數、布爾值或者 null,或者它們所構成的數組或者對象。
編碼--序列化:
- dumps:把數據類型轉換成字元串
- dump:把數據類型轉換成字元串並存儲在文件中
解碼--反序列化:
- loads:把字元串轉換成數據類型
- load:把文件打開從數據類型轉換成字元串
說明:在程式運行的過程中,所有的變數都是在記憶體中。一旦程式結束,變數也會消失。
所以,我們把變數從記憶體中變成可存儲或傳輸的過程稱為序列化。反過來,把變數內容從序列化的對象重新讀到記憶體里稱之為反序列化。
1、dumps:將字典轉為字元串
In [100]: d=dict(name='xjm') In [101]: a=json.dumps(d) In [102]: a Out[102]: '{"name": "xjm"}' In [103]: type(a) Out[103]: str
2、dump:寫入json文件中
In [105]: with open('Desktop/j.txt','w') as f: ...: a=json.dump(d,f) ...: print('文件寫入完成……') ...: 文件寫入完成……
3、loads:讀取json文件
In [114]: d=json.loads(a) In [115]: d Out[115]: {'name': 'xjm'}
4、load:在文件中讀取json文件
In [120]: with open('j.txt','rb') as f: ...: a=json.load(f) ...: In [121]: a Out[121]: {'name': 'xjm'}