python的字典和json轉的互轉


res = ''' {"key1":"123","key2":"abc"} '''  #定義json格式的字符串,json的格式必須是"" 雙引號,這點和python不同,不能用單引號或者三引號進行標注字符串的格式。
print(type(res))
>>> <class 'str'>


res2 = {"key1":"123","key2":"abc"}
print(type(res2))
>>> <class 'dict'>

區別:在python中遇到{}格式的,默認當做了dict處理,要想{}表達為json格式的,在定義的時候,需要添加''' ''' 三引號,告訴python解釋器三引號里面的內容為json格式的字符串,而非字典。

當然,在python中也會對dict和json串之間經常會進行轉換方便使用。json串是適用於任何語言的文件傳輸格式,所以,在Python中,我們可以借用json的標准庫進行轉換。

json 轉換成 dict

import json  #導入標准庫json
res = ''' {"key1":"123","key2":"abc"} ''' res_dict = json.loads(res) #使用loads()將json字符串的res轉換成方便python處理的dict res_dict print(type(res_dict))

>>> <class 'dict'>

dict 轉換成 json

res2 = {"關鍵字一號":"123","key2":"abc"}
res2_json = json.dumps(res2,indent=4)
print(res2_json)
print(type(res2_json)) #<class 'str'>

>>>{"\u5173\u952e\u5b57\u4e00\u53f7": "123","key2": "abc"}


從上面的結果可以看出,當key值是中文的時候,打印出來的內容時中文的unicode字符編碼,那么如何讓中文展示成我們希望看到的中文呢? 只需要在dumps(ensure_ascii=False),將中文正常展示
將如上代碼修改為
res2 = {"關鍵字一號":"123","key2":"abc"}
res2_json = json.dumps(res2,indent=4,ensure_ascii=False) #indent 左邊空格4個字符,格式化json內容
print(res2_json)
print(type(res2_json)) #<class 'str'>


>>>{"關鍵字一號": "123","key2": "abc"} 

  如上我們看到,當將字典轉換成json的格式轉換的時候,可以直接用json.dumps()方法;當將字json轉換成字典的格式的時候,直接json.loads()

如果字符串內容很大,大到1T的時候,如果還用上面的方法,難免性能不加。在json庫里面,對文件的轉換也提供了方法:

將文件內容轉換成dict 

import json
f =open('testmiya.txt',encoding='utf-8')
res_dict = json.load(f)
print(res_dict)

>>>{'海龍': '111', 'xiaojun': '123456', 'tanailing': '11111', 'xiaohei': '7891'}


不需要講文件的內容讀取出來,直接將打開的文件對象f進行轉換就可以。

  

將字典內容直接寫入文件。

import json
res2 = {"關鍵字一號":"123","key2":"abc"}
f=open('testjson.txt',mode='w',encoding='utf-8') #只寫模式打開文件
json.dump(res2,f,indent=4,ensure_ascii=False)#將字典直接通過dump轉換成字典后寫入文件對象f,不需要轉換成字典賦值給對象,然后再調用f.write()寫入文件。從而更加高效的實現了文件的寫入
f.close()

>>>{"關鍵字一號": "123","key2": "abc"}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM