日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python中的JSON到底怎么用?

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

前言

最近在學(xué)習(xí)python爬蟲,在對數(shù)據(jù)進(jìn)行持久化存儲的時候,會選擇使用json格式的數(shù)據(jù)進(jìn)行存儲,由此就引發(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在計(jì)算機(jī)英語中是 轉(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的操作實(shí)現(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 作用是指定文件位置和讀寫方式

運(yùn)行這段代碼后,自然就會生成 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

下面是一組實(shí)例:

使用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ù),不傳就報(bào)錯。

dump和dumps同理。

特別注意:

需要特別注意的是dump在對中文進(jìn)行保存的時候,中文會被默認(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)

運(yùn)行后,可以明顯感受到 中文變成了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)容還不錯,歡迎將生活随笔推薦給好友。