python json转化为字典_python的字典和json转的互转

res = ''' {"key1":"123","key2":"abc"} ''' #定义json格式的字符串,json的格式必须是"" 双引号,这点和python不同,不能用单引号或者三引号进行标注字符串的格式。

print(type(res))

>>>

res2 = {"key1":"123","key2":"abc"}

print(type(res2))

>>>

区别:在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))

>>>

dict转换成 json

res2 = {"关键字一号":"123","key2":"abc"}

res2_json = json.dumps(res2,indent=4)

print(res2_json)

print(type(res2_json)) #

>>>{"\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)) #

>>>{"关键字一号": "123","key2": "abc"}

如上我们看到,当将字典转换成json的格式转换的时候,可以直接用json.dumps()方法;当将字json转换成字典的格式的时候,直接json.loads()

如果字符串内容很大,大到1T的时候,如果还用上面的方法,难免性能不加。在json库里面,对文件的转换也提供了方法:

将文件内容转换成dict

1352078-20180907123153960-102540402.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值