日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python中的JSON到底怎么用?

發(fā)布時間:2025/1/21 python 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中的JSON到底怎么用? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

最近在學(xué)習(xí)python爬蟲,在對數(shù)據(jù)進行持久化存儲的時候,會選擇使用json格式的數(shù)據(jù)進行存儲,由此就引發(fā)了一個問題,python中的JSON庫到底咋用?

以前使用JavaScript中Json.stringfy和Json.parse倒是用的飛起。

到了python中使用json庫就不會用了,這不行!!!

必須解決這個問題,由此,經(jīng)過學(xué)習(xí)后,就產(chǎn)生了下文。

內(nèi)容

簡介

JSON是一種輕量級的數(shù)據(jù)交換格式。

核心方法

python中的json庫核心方法只有4個

  • json.dump
  • json.dumps
  • json.load
  • json.loads

dump在計算機英語中是 轉(zhuǎn)存、導(dǎo)出、保存 的意思

那么就很好理解了。

dumps ,拆解開來,dump string , 轉(zhuǎn)化為字符流的數(shù)據(jù)

現(xiàn)在,我們來看一段代碼:

dic = {'name': 'tom',"age": 18,"friends": ('mick','jerry'),'text': 'hello world'}# obj --> jsonres = json.dumps(dic)print(res)# 結(jié)果:# {"name": "tom", "age": 18, "friends": ["mick", "jerry"], "text": "hello world"}

json中字符串對應(yīng)的使用的是雙引號,所以 python中的 ‘name’ 變成了 “name”

python中tuple對應(yīng)的是json中的arr,所以出現(xiàn)了以下變化,( ‘mick’, ‘jerry’ ) — >[“mick”, “jerry”]

那么接下來我們試試dump的操作。

dump的操作實現(xiàn)的功能是將python對象轉(zhuǎn)化成json數(shù)據(jù)并存儲到文件中。

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的文件,內(nèi)容如下所示

load的含義是加載,通過上面的學(xué)習(xí),可以以此類推 load 和 loads方法。


dump , 將python對象轉(zhuǎn)換成json數(shù)據(jù),并向文件中保存json數(shù)據(jù)。

load,從文件中讀取json數(shù)據(jù),并轉(zhuǎn)化成python對象。

dumps,python字符流轉(zhuǎn)化成 json數(shù)據(jù)流, 簡單的講,python obj — > json

loads, json數(shù)據(jù)流 加載成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)# 結(jié)果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}print(type(res))# 結(jié)果: <class 'dict'>

使用json.load方法:

fp = open('./dic.json', 'r', encoding='utf-8')# 從文件中讀取json數(shù)據(jù)res = json.load(fp)print(res)# 結(jié)果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}print(type(res))# 結(jié)果:<class 'dict'>

dic.json數(shù)據(jù)如下:

總結(jié)

可以簡單的理解,loads, 加了s就是從字符流中加載,不加s就是從文件流中加載。

所以json.load(fp) , 第一個參數(shù)fp指定的是文件的位置,同時fp是必傳參數(shù),不傳就報錯。

dump和dumps同理。

特別注意:

需要特別注意的是dump在對中文進行保存的時候,中文會被默認(rèn)轉(zhuǎn)化成unicode編碼

fp = open('./dic.json', 'w', encoding='utf-8')# 張三 --- > "\u5f20\u4e09" 默認(rèn)中文會被轉(zhuǎn)化成Unicode編碼dic = {'name': '張三','age': 18}json.dump(dic, fp)

運行后,可以明顯感受到 中文變成了Unicode編碼,解決辦法。

添加關(guān)鍵詞,ensure_ascii=False ,這樣就不會自動轉(zhuǎn)化成Unicode編碼了。

fp = open('./dic.json', 'w', encoding='utf-8')# 張三 --- > "\u5f20\u4e09" 默認(rèn)中文會被轉(zhuǎn)化成Unicode編碼dic = {'name': '張三','age': 18}# 這里加了 ensure_ascii=Falsejson.dump(dic, fp, ensure_ascii=False)

此時中文就能正常顯示了。

附1:python和json對照表

總結(jié)

以上是生活随笔為你收集整理的python中的JSON到底怎么用?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。