最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的json對(duì)象與string相互轉(zhuǎn)換教程

 更新時(shí)間:2022年11月30日 10:52:31   作者:Python熱愛(ài)者  
python里有json這個(gè)庫(kù),但并沒(méi)有json這個(gè)類(lèi),所以所謂的json對(duì)象本質(zhì)上就是一個(gè)dict;而json這個(gè)庫(kù),用于實(shí)現(xiàn)dict到string、string到dict的互轉(zhuǎn),這篇文章主要介紹了Python中的json對(duì)象與string相互轉(zhuǎn)換教程,需要的朋友可以參考下

首先要明確,python里有json這個(gè)庫(kù),但并沒(méi)有json這個(gè)類(lèi),所以所謂的json對(duì)象本質(zhì)上就是一個(gè)dict;而json這個(gè)庫(kù),用于實(shí)現(xiàn)dict到string、string到dict的互轉(zhuǎn)。

更具體一點(diǎn),json對(duì)象(dict)轉(zhuǎn)string用json.dumps(),string轉(zhuǎn)json對(duì)象(dict)用json.loads()。(另外dump()是json輸出到文件,load()是從文件載入成json。)

對(duì)于哪個(gè)轉(zhuǎn)哪個(gè)用哪個(gè)常弄混的問(wèn)題,可以這么理解:以json為參照點(diǎn),loads是向載入的動(dòng)作靠向json所以是string轉(zhuǎn)成json對(duì)象,所以dumps是從取出的動(dòng)作遠(yuǎn)離json所以是json對(duì)象轉(zhuǎn)成string。

一、json對(duì)象(dict)轉(zhuǎn)string

1 簡(jiǎn)單地直接轉(zhuǎn)換----使用json.dumps()

import json

# 變量為dict類(lèi)型,亦即所謂的json對(duì)象
json_dict = {
    "username": "root",
    "password": "toor"
}

# 變量為str類(lèi)形,json對(duì)象轉(zhuǎn)成的字符串
# 值為'{"username": "root", "password": "toor"}'
json_str = json.dumps(json_dict)

# 注意如果將json_dict和json_str都使用print()直接打印出來(lái),看不出什么區(qū)別,因?yàn)樽址?lèi)型變量print出來(lái)后最外層的引號(hào)會(huì)被脫掉
# 唯一的區(qū)別是,打印出來(lái)的json_dict鍵值都使用單引號(hào),而json_str內(nèi)層使用雙引號(hào),外層使用單引號(hào)

2 更美觀地輸出

json對(duì)象或者說(shuō)是dict類(lèi)型變量是可以直接使用print()函數(shù)打印的,但只是那種所有key-value都打印在一行的形式。使用json.dumps()我們可以使用輸出成縮進(jìn)形式。

import json

# 變量為dict類(lèi)型,亦即所謂的json對(duì)象
json_dict = {
    "username": "root",
    "password": "toor"
}

# 變量為str類(lèi)形,json對(duì)象轉(zhuǎn)成的字符串
# 值為'{"username": "root", "password": "toor"}'
# json_str = json.dumps(json_dict)

# indent是縮進(jìn)空格數(shù),這里4表示使用4空格縮進(jìn)
# 值為'{\n    "username": "root",    \n"password": "toor"\n}'
json_str = json.dumps(json_dict, indent=4)
print(json_str)

# 也可以直接使用json.dump()寫(xiě)到文件
# with open("test.txt", "r", encoding="utf-8") as fd:
#     json.dump(json_dict, fd, indent=4)

# logging模塊也可以這樣轉(zhuǎn)換再打印實(shí)現(xiàn)縮進(jìn)效果
# json_str = json.dumps(json_dict, indent=4)
# logging.info(json_str)

二、string轉(zhuǎn)json對(duì)象(dict)

常規(guī)的string----指最外層是單引號(hào),內(nèi)層鍵值是雙引號(hào),且最后一對(duì)鍵值之后沒(méi)有逗號(hào)的字符串。如’{“username”: “root”, “password”: “toor”}'。

特殊的string----指最外層是雙引號(hào),內(nèi)層鍵值是單引號(hào),或者最一對(duì)鍵值之后有逗號(hào)的字符串。如"{‘username’: ‘root’, ‘password’: ‘toor’}"或’{“username”: “root”, “password”: “toor”,}'。

如下圖可以看到,對(duì)于特殊字符串如果強(qiáng)行使用json.loads()要將其轉(zhuǎn)換成json對(duì)象,那最外層雙引號(hào)或最后的逗號(hào)都會(huì)觸發(fā)報(bào)錯(cuò):ValueError: Expecting property name: line x column xx (char xx)

1 常規(guī)的string轉(zhuǎn)json對(duì)象(dict)----使用json.loads()

import json

# 變量為str類(lèi)形,待json對(duì)象的常規(guī)字符串
json_str = '{"username": "root", "password": "toor"}'
# Python學(xué)習(xí)交流群:711312441
# 變量為dict類(lèi)型,亦即所謂的json對(duì)象
# {'username': 'root', 'password': 'toor'}
json_dict = json.loads(json_str)

2 特殊的string轉(zhuǎn)json對(duì)象(dict)----使用ast.literal_eval()

import ast

# 變量為str類(lèi)形,待json對(duì)象的特殊字符串
json_str = "{'username': 'root', 'password': 'toor'}"
# json_str = '{"username": "root", "password": "toor",}'
# json_str = "{'username': 'root', 'password': 'toor',}"

# 變量為dict類(lèi)型,亦即所謂的json對(duì)象
# {'username': 'root', 'password': 'toor'}
json_dict = ast.literal_eval(json_str)

到此這篇關(guān)于Python中的json對(duì)象與string相互轉(zhuǎn)換教程的文章就介紹到這了,更多相關(guān)python json對(duì)象與string轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

乐亭县| 扶绥县| 屯门区| 出国| 定边县| 吴旗县| 扶余县| 个旧市| 大宁县| 商丘市| 吐鲁番市| 崇左市| 裕民县| 宁蒗| 建昌县| 泌阳县| 高青县| 乐山市| 阿克苏市| 昌黎县| 高邑县| 平遥县| 吕梁市| 敦化市| 宁海县| 始兴县| 哈巴河县| 行唐县| 马公市| 怀仁县| 榆林市| 新河县| 太白县| 峨眉山市| 拉萨市| 吴旗县| 清徐县| 酉阳| 中超| 新丰县| 辉县市|