本文目錄一覽:
- 1、python 怎樣把字典轉成json字元串
- 2、把python字典類型轉換為 JSON字元串
- 3、python之json格式轉化
- 4、python3 對象 |字典|json|yaml|字元串 相互轉化
python 怎樣把字典轉成json字元串
有一個需求,需要用python把json字元串轉化為字典
inp_str = ” {‘k1’:123, ‘k2’: ‘345’,』k3』,』ares』} “
import jsoninp_str = ” {‘k1’:123, ‘k2’: ‘345’,』k3』,』ares』} “print json.loads(a)
死活出不來結果,還報錯,沒搞明白。
最後,直接複製網上的代碼,OK,運行成功,可是把我的inp_srt變數填進去,不行,報錯;開始對比兩個變數有什麼不同,一直以為Python中雙引號單引號可以隨便用,意思不變;最後百度了知道json的標準格式:要求必須 只能使用雙引號作為鍵 或者 值的邊界符號,不能使用單引號,而且「鍵」必須使用邊界符(雙引號)
改了後OK了。
#-*-coding:utf-8-*-import json
inp_strr = ‘{“k1”:123, “k2”: “456”, ‘k3’:”ares”}’inp_dict = json.loads(inp_strr) # 根據字元串書寫格式,將字元串自動轉換成 字典類型print inp_dict
把python字典類型轉換為 JSON字元串
# 導入包
import json
# 創建一個字典類型的數據
data = { ‘id’: 1, ‘name’: ‘Tom’, ‘address’: ‘北京市海淀區’, ‘school’: None }
# 將字典類型轉換json字元串
json_str = json.dumps(data)
# 輸出結果
print(json_str)
要是真想學,推薦你看黑馬程序員的公開課,不像別的免費課程講的那麼淺顯,內容相對來說很良心也有一定的深度。自學的話非常合適。
python之json格式轉化
import json
常用的方法
json.dumps(python_obj):把數據類型轉換成字元串
json.loads(json_string):把字元串轉換成json
json.dump():把數據類型轉換成字元串並存儲在文件中
json.load(file_stream):把文件打開,把裡面的字元串轉換成數據類型
運行結果:
python3 對象 |字典|json|yaml|字元串 相互轉化
在研究 k8s 的yaml 配置文件的時候,我總擔心自己一不小心 會寫錯,所以我嚮往 使用將對象 序列化 yaml 的形式,
其實 python object 可以 直接 轉 yaml ,甚至也可以 直接 轉成yaml文件!!!
這裡 會經常用到幾個 函數 vars() ast.
我們先嘗試用最笨的方法 實現 object到yaml 的轉化
在python對象 convert to dict 的形式,使用 vars()函數
然後 dict convert to json 使用 json.dumps(dict)函數
然後 json converte to yaml 使用 ya= yaml.load(json.dumps(dict)) 然後
再 yaml.safe_dump(ya,default_flow_style=False)
至此我們看到 從 python Object — dict —- json — yaml 的轉化
其中 obj dict json yaml 轉 string ,只要 str()函數即可,或者 str(vars())結合
yaml 格式 寫入到文件 ,需要注意的是, open()函數 的mode 一定要是 ‘w’ ,不能是』wb’, b代表是二進位寫入
yaml 寫入的是dict str,使用 『wb’ 會報錯,[yaml TypeError: a bytes-like object is required, not ‘str’]
【出現該錯誤往往是通過open()函數打開文本文件時,使用了『rb』屬性,如:fileHandle=open(filename,’rb’),則此時是通過二進位方式打開文件的,所以在後面處理時如果使用了str()函數,就會出現該錯誤,該錯誤不會再python2中出現。
具體解決方法有以下兩種:
第一種,在open()函數中使用『r』屬性,即文本方式讀取,而不是『rb』,以二進位文件方式讀取,可以直接解決問題。
第二種,在open()函數中使用『rb』,可以在使用之前進行轉換,有以下實例,來自: 】
其實 python object 可以 直接 轉 yaml ,甚至也可以 直接 轉成yaml文件!!!
比如我已經定義了一個 Dog python class,他有 好幾個屬性 並已經賦值初始化了
另外生成 yaml 對象
生成yaml文件
結果是
反過來 yaml —- json — 持久化 json 文件 indent=1屬性是為了讓 json 不以單行展示,而是展開
注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是鍵值對
【# set object is not JSON serializable [duplicate]
】
打開 demo.json
yaml — dict
yaml — python object
json — dict
json.loads()
dict– json
json.jumps()
str — dict
newdict=dict(str)
json — python object
一個python object無法直接與json轉化,只能先將對象轉化成dictionary,再轉化成json;對json,也只能先轉換成dictionary,再轉化成object,通過實踐,源碼如下:
yaml — python object
對yaml,也只能先轉換成json —dictionary,再轉化成object,通過實踐,源碼如下:
dict — -python object
python對象 默認都有一個 私有的屬性 dict 取值 就是 object的 字典形式, 賦值就就可以給對象屬性對應賦值
例如json 轉 對象
對象 轉 json
Python之dict(或對象)與json之間的互相轉化
在Python語言中,json數據與dict字典以及對象之間的轉化,是必不可少的操作。
dict字典轉json數據
對象轉json數據
json數據轉成dict字典
json數據轉成對象
json的load()與dump()方法的使用
dump()方法的使用
原創文章,作者:NFXM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134692.html