溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python3操作json

發(fā)布時(shí)間:2020-07-05 09:25:05 來(lái)源:網(wǎng)絡(luò) 閱讀:1199 作者:白話 欄目:編程語(yǔ)言

json本身就是一種字符串。


# 需要導(dǎo)入模塊包
import json
1,將字符串轉(zhuǎn)為json格式
s1 = "{'key1':'value1','key2':'value2'}"
print(s1)
print(type(s1))
js1 = json.dumps(s1)
print(js1)
print(type(js1))

結(jié)果:
{'key1':'value1','key2':'value2'}
<class 'str'>
"{'key1':'value1','key2':'value2'}"
<class 'str'>

結(jié)論:
dumps就是把字符串外面又加了一層引號(hào)。

2,將json解析為字符串
s2 = json.loads(js1)
print(s2)
print(type(s2))

結(jié)果:
{'key1':'value1','key2':'value2'}
<class 'str'>

結(jié)論:
正好與dumps相反,減掉了最外層的引號(hào)。

3,字典轉(zhuǎn)json
d1 = {'key1':'value1','key2':'value2'}
print(d1)
print(type(d1))
js2 = json.dumps(d1)
print(js2)
print(type(js2))

結(jié)果:
{'key1': 'value1', 'key2': 'value2'}
<class 'dict'>
{"key1": "value1", "key2": "value2"}
<class 'str'>

結(jié)論:
效果非常有意思。尤其是與《字符串轉(zhuǎn)json》對(duì)比一下。如果僅僅看最后得出來(lái)的數(shù)據(jù)的話,根本是看不出來(lái)。

4,json轉(zhuǎn)字典
d2 = eval(js2)
print(d2)
print(type(d2))

結(jié)果:
{'key1': 'value1', 'key2': 'value2'}
<class 'dict'>
5,再作個(gè)對(duì)比:字符串轉(zhuǎn)字典
d3 = eval(s1)
print(d3)
print(type(d3))

結(jié)果:
{'key1': 'value1', 'key2': 'value2'}
<class 'dict'>

結(jié)論:
可以看到,eval對(duì)于json和字符串的操作是相同的。


最終:

如果想操作json,最終的操作都可以轉(zhuǎn)為Python的字典類(lèi)型進(jìn)行操作。
當(dāng)然,不是非要這么做。

挺有意思的。


接收來(lái)自網(wǎng)頁(yè)的json字符串,就一定要用loads加載一下才可以。如果要是直接使用eval的話,數(shù)據(jù)會(huì)有問(wèn)題。


直接操作文件

import json

json_str = {'key1': 'value1', 'key2': 'value2'}

# 寫(xiě)入文件
# 可以通過(guò)json包,將json串(可以是字符串類(lèi)型、字典類(lèi)型、json類(lèi)型)直接寫(xiě)入到文件中
with open('something.json') as sjw:
    json.dump(json_str, sjw)

# 讀取文件
json_read = json.load('something.json')
print(json_read)
json_read.close()
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI