欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的json對象與string相互轉換教程

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

首先要明確,python里有json這個庫,但并沒有json這個類,所以所謂的json對象本質(zhì)上就是一個dict;而json這個庫,用于實現(xiàn)dict到string、string到dict的互轉。

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

對于哪個轉哪個用哪個常弄混的問題,可以這么理解:以json為參照點,loads是向載入的動作靠向json所以是string轉成json對象,所以dumps是從取出的動作遠離json所以是json對象轉成string。

一、json對象(dict)轉string

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

import json

# 變量為dict類型,亦即所謂的json對象
json_dict = {
    "username": "root",
    "password": "toor"
}

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

# 注意如果將json_dict和json_str都使用print()直接打印出來,看不出什么區(qū)別,因為字符串類型變量print出來后最外層的引號會被脫掉
# 唯一的區(qū)別是,打印出來的json_dict鍵值都使用單引號,而json_str內(nèi)層使用雙引號,外層使用單引號

2 更美觀地輸出

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

import json

# 變量為dict類型,亦即所謂的json對象
json_dict = {
    "username": "root",
    "password": "toor"
}

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

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

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

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

二、string轉json對象(dict)

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

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

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

1 常規(guī)的string轉json對象(dict)----使用json.loads()

import json

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

2 特殊的string轉json對象(dict)----使用ast.literal_eval()

import ast

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

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

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

相關文章

  • 用Python代碼自動生成文獻的IEEE引用格式的實現(xiàn)

    用Python代碼自動生成文獻的IEEE引用格式的實現(xiàn)

    這篇文章主要介紹了用Python代碼自動生成文獻的IEEE引用格式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 關于np.meshgrid函數(shù)中的indexing參數(shù)問題

    關于np.meshgrid函數(shù)中的indexing參數(shù)問題

    Meshgrid函數(shù)在二維與三維空間中用于生成坐標網(wǎng)格,便于進行圖像處理和空間數(shù)據(jù)分析,二維情況下,默認使用笛卡爾坐標系,而三維meshgrid則涉及不同的坐標軸取法,在三維情況下,可能會出現(xiàn)坐標軸排列序混亂
    2024-09-09
  • python出現(xiàn)

    python出現(xiàn)"IndentationError: unexpected indent"錯誤解決辦法

    這篇文章主要介紹了python出現(xiàn)"IndentationError: unexpected indent"錯誤解決辦法的相關資料,希望通過本文能解決遇到這樣的問題,需要的朋友可以參考下
    2017-10-10
  • Python在圖片中插入大量文字并且自動換行

    Python在圖片中插入大量文字并且自動換行

    今天小編就為大家分享一篇關于Python在圖片中插入大量文字并且自動換行,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 解決Python保存文件名太長OSError: [Errno 36] File name too lon

    解決Python保存文件名太長OSError: [Errno 36] File 

    這篇文章主要介紹了解決Python保存文件名太長OSError: [Errno 36] File name too lon問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫

    python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫

    這篇文章主要為大家介紹了python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Pytorch閱讀文檔中的flatten函數(shù)

    Pytorch閱讀文檔中的flatten函數(shù)

    PyTorch提供了一個非常方便的函數(shù)flatten()來完成這個任務,本文將介紹Pytorch閱讀文檔中的flatten函數(shù),并提供一些示例代碼,感興趣的朋友一起看看吧
    2023-11-11
  • 解析django的csrf跨站請求偽造

    解析django的csrf跨站請求偽造

    本文主要介紹了解析django的csrf跨站請求偽造,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python學習之基礎語法介紹

    Python學習之基礎語法介紹

    大家好,本篇文章主要講的是Python學習之基礎語法介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • python中exe文件解包方法詳解

    python中exe文件解包方法詳解

    這篇文章主要給大家介紹了關于python中exe文件解包方法的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友可以參考下
    2023-06-06

最新評論