Python學習之json模塊
1. 什麽是JSON
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。
JSON建構於兩種結構:
“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)。
這些都是常見的數據結構。事實上大部分現代計算機語言都以某種形式支持它們。這使得一種數據格式在同樣基於這些結構的編程語言之間交換成為可能。
jso官方說明參見:http://json.org/
Python操作json的標準api庫參考:http://docs.python.org/library/json.html
2. json的基本操作
對簡單數據類型的encoding 和 decoding:
使用簡單的json.dumps方法對簡單數據類型進行編碼,例如:
import json dic = {‘name‘: ‘Jim‘} print(dic) print(type(dic)) data = json.dumps(dic) print(data) print(type(data))
輸出:
{‘name‘: ‘Jim‘}
<class ‘dict‘>
{"name": "Jim"}
<class ‘str‘>
我們可以看到, Python的字典數據類型,在經過json轉換後,數據類型改變為 字符串了。
這個過程, json在內部做了處理:把單引號替換成雙引號,因為json只支持雙引號,然後轉換成了json格式的字符串對象
下面我們在用 json的loads方法,把字符串對象還原成dict數據類型:
import json dic = {‘name‘: ‘Jim‘} print(dic) print(type(dic)) data = json.dumps(dic) print(data) print(type(data)) output = json.loads(data) print(output)print(type(output))
輸出:
{‘name‘: ‘Jim‘}
<class ‘dict‘>
{"name": "Jim"}
<class ‘str‘>
{‘name‘: ‘Jim‘}
<class ‘dict‘>
從輸出我們可以看到, 使用json的loads方法後,它把 json格式的字符串對象又轉換為python的dict數據類型了。
我們再來看看其它數據類型的轉換:
import json list = [‘hello‘, 4, 10] i = 10 json_list = json.dumps(list) print(json_list) print(type(json_list)) json_i = json.dumps(i) print(json_i) print(type(json_i))
輸出:
["hello", 4, 10]
<class ‘str‘>
10
<class ‘str‘>
經過json的dumps方法後,都轉換為字符串對象。
3. json的兩組函數
json的 dumps 方法 和 loads方法, json的 dump方法和load方法 的區別。
代碼對比如下:
import json dic = {‘name‘: ‘Jim‘} f_write = open(‘json.txt‘, ‘w‘) data = json.dumps(dic) f_write.write(data) f_write.close() f_read = open(‘json.txt‘, ‘r‘) data = f_read.read() output = json.loads(data) print(output)
輸出:
{‘name‘: ‘Jim‘}
<class ‘dict‘>
import json dic = {‘name‘: ‘Jim‘} f_write = open(‘json.txt‘, ‘w‘) data = json.dump(dic, f_write) f_write.close() f_read = open(‘json.txt‘, ‘r‘) output = json.load(f_read) print(output) print(type(output))
輸出:
{‘name‘: ‘Jim‘}
<class ‘dict‘>
load方法和dump方法, 分別封裝了 f.read() 和 f.write() 的動作
Python學習之json模塊