python中的JSON到底怎么用?
前言
最近在學習python爬蟲,在對數據進行持久化存儲的時候,會選擇使用json格式的數據進行存儲,由此就引發了一個問題,python中的JSON庫到底咋用?
以前使用JavaScript中Json.stringfy和Json.parse倒是用的飛起。
到了python中使用json庫就不會用了,這不行!!!
必須解決這個問題,由此,經過學習后,就產生了下文。
內容
簡介
JSON是一種輕量級的數據交換格式。
核心方法
python中的json庫核心方法只有4個
- json.dump
- json.dumps
- json.load
- json.loads
dump在計算機英語中是 轉存、導出、保存 的意思
那么就很好理解了。
dumps ,拆解開來,dump string , 轉化為字符流的數據
現在,我們來看一段代碼:
dic = {'name': 'tom',"age": 18,"friends": ('mick','jerry'),'text': 'hello world'}# obj --> jsonres = json.dumps(dic)print(res)# 結果:# {"name": "tom", "age": 18, "friends": ["mick", "jerry"], "text": "hello world"}json中字符串對應的使用的是雙引號,所以 python中的 ‘name’ 變成了 “name”
python中tuple對應的是json中的arr,所以出現了以下變化,( ‘mick’, ‘jerry’ ) — >[“mick”, “jerry”]
那么接下來我們試試dump的操作。
dump的操作實現的功能是將python對象轉化成json數據并存儲到文件中。
dic = {'name': 'tom',"age": 18,"friends": ('mick','jerry'),'text': 'hello world'}fp = open('./dic.json', 'w', encoding='utf-8')# obj --> json 并且將json寫入文件json.dump(dic, fp, ensure_ascii=False)# fp = file place 作用是指定文件位置和讀寫方式運行這段代碼后,自然就會生成 dic.json的文件,內容如下所示
load的含義是加載,通過上面的學習,可以以此類推 load 和 loads方法。
dump , 將python對象轉換成json數據,并向文件中保存json數據。
load,從文件中讀取json數據,并轉化成python對象。
dumps,python字符流轉化成 json數據流, 簡單的講,python obj — > json
loads, json數據流 加載成python字符流,簡單的講,json—> python obj
下面是一組實例:
使用json.loads方法:
# 這是一個json格式的字符串json_text = '{"name": "tom", "age": 18, "friends": ["mick", "jerry"], "text": "hello world"}'# loads = load from stringres = json.loads(json_text)print(res)# 結果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}print(type(res))# 結果: <class 'dict'>使用json.load方法:
fp = open('./dic.json', 'r', encoding='utf-8')# 從文件中讀取json數據res = json.load(fp)print(res)# 結果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}print(type(res))# 結果:<class 'dict'>dic.json數據如下:
總結
可以簡單的理解,loads, 加了s就是從字符流中加載,不加s就是從文件流中加載。
所以json.load(fp) , 第一個參數fp指定的是文件的位置,同時fp是必傳參數,不傳就報錯。
dump和dumps同理。
特別注意:
需要特別注意的是dump在對中文進行保存的時候,中文會被默認轉化成unicode編碼
fp = open('./dic.json', 'w', encoding='utf-8')# 張三 --- > "\u5f20\u4e09" 默認中文會被轉化成Unicode編碼dic = {'name': '張三','age': 18}json.dump(dic, fp)運行后,可以明顯感受到 中文變成了Unicode編碼,解決辦法。
添加關鍵詞,ensure_ascii=False ,這樣就不會自動轉化成Unicode編碼了。
fp = open('./dic.json', 'w', encoding='utf-8')# 張三 --- > "\u5f20\u4e09" 默認中文會被轉化成Unicode編碼dic = {'name': '張三','age': 18}# 這里加了 ensure_ascii=Falsejson.dump(dic, fp, ensure_ascii=False)此時中文就能正常顯示了。
附1:python和json對照表
總結
以上是生活随笔為你收集整理的python中的JSON到底怎么用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scrapy item引用时报错
- 下一篇: 【图文教程】Ubuntu softwar