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"}