目錄
一 什么是json
json是一種獨立于編程語言和平臺得輕量級數據交換方式。和xml一樣,只是一種數據交換方式,與編程語言沒有依賴關系。各種支持json數據格式得編程語言,都會有對其進行解析得方法。xml和json都用于數據存儲和數據交換,但是現在json越來越流行,用得比xml多。json較xml得優點如下
- xml需要用xml解析器來進行,而json則不用(主要區別)。
- json不需要寫標簽,較簡短。
- json得讀寫速度更快
二 json語法格式
{ "name": "安先生", "age": "24"}
如上,json數據是以key:value 得形式保存在一對大括號{}中得,多個數據用逗號分隔,和python中得字典非常相像,但是json數據中得key和value全都是用雙引號包起來得。
三 python與json得交互
python中提供了四種與json數據打交道得方法,即json.loads(),json.load(),json.dumps()和json.dump(),下面一一進行介紹。
1. json.loads()
json.loads(): 將json對象轉換為python對象,一般是將字符串轉為python得字典dict。
import jsonjson_data = '{"name": "安先生", "age": "24"}'print(type(json_data))print(json_data)#json.loads()將json對象轉為python對象py_data = json.loads(json_data)print(type(py_data))print(py_data)
輸出:
>>>
<class 'str'>
{"name": "安先生", "age": "24"}
<class 'dict'>
{'name': '安先生', 'age': '24'}
2. json.load()
json.load(): 讀取json文件(解碼)
import jsonjson_data = open('../練習文件/json.json', 'r', encoding='utf-8')print(type(json_data))data = json.load(json_data)print(type(data))print(data)
>>>
<class '_io.TextIOWrapper'>
<class 'dict'>
{'name': '安先生', 'age': '24', 'job': '軟件測試'}
3. json.dumps()
json.dumps(): 將python對象轉為json對象
import jsonpy_data = {"name": "張三", "age": 24, "job": "法外狂徒"}print(type(py_data))print(py_data)#indent控制縮進,ensure_ascii控制編碼json_data = json.dumps(py_data, indent=4, ensure_ascii=False)print(type(json_data))print(json_data)
其中indent參數是控制縮進得,ensure_ascii改變默認編碼(Unicode)
<class 'dict'>{'name': '張三', 'age': 24, 'job': '法外狂徒'}<class 'str'>{ "name": "張三", "age": 24, "job": "法外狂徒"}
4. json.dump()
json.dump(): 向json文件寫數據(編碼)
import jsonpy_data = {"name": "張三", "age": 24, "job": "法外狂徒"}#先用json.dumps()將python對象轉為json對象json_data = json.dumps(py_data)with open('../練習文件/json.json', 'w', encoding='utf-8') as f: json.dump(json_data, f)#讀取數據msg = open('../練習文件/json.json', 'r')msg = json.load(msg)print(msg)
寫入得json文件數據:
可以看到,讀寫得數據和我們想要得不一致,這是因為json.dump()默認寫得是Unicode編碼得數據,中文是不在Unicode編碼中得,所以顯示得時候就不會以中形式顯示,不過可以用json.dump()得ensure_ascii參數來控制,將其設置為False,
如下:
import jsonpy_data = {"name": "張三", "age": "24", "job": "法外狂徒"}#轉換成json對象時,編碼默認為Unicode,ensure_ascii=False 取消默認編碼with open('../練習文件/json.json', 'w', encoding='utf-8') as f: json.dump(py_data, f, indent=4, ensure_ascii=False,)#讀取數據msg = open('../練習文件/json.json', 'r', encoding='utf-8')msg = json.load(msg)print(msg)
結果如下:
>>>{'name': '張三', 'age': '24', 'job': '法外狂徒'}
到此這篇關于python與json數據得交互詳情得內容就介紹到這了,更多相關python json數據交互內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!