python中json的基本使用

python中json的基本使用:

  • json是一种通用的数据类型
  • 一般情况下接口返回的数据类型都是json
  • 长得像字典,形式也是k-v{}
  • 但其实是字符串
  • 字符串不能使用key,value来取值,所以要先转换为字典才可以

json格式:

{
    "database": {
        "host": "127.0.0.1",
        "user": "root",
        "password": "320715",
        "database": "dejavu"
    },
    "database_type": "mysql"
}

json操作:

1.json转换为字典

import json
# load是对文件直接进行处理,loads需要读取文件内容后处理
configpath = "f:\\dejavu-master\\dejavu.cnf.SAMPLE"
with open(configpath) as f:
...     config = json.load(f)
...     print(config)
...     
{'database': {'host': '127.0.0.1', 'user': 'root', 'password': '320715', 'database': 'dejavu'}, 'database_type': 'mysql'}


# 使用loads方法需要先读取文件内的内容
with open(configpath) as f:
...     content = f.read()
...     config = json.loads(content)
...     print(config)
...     
{'database': {'host': '127.0.0.1', 'user': 'root', 'password': '320715', 'database': 'dejavu'}, 'database_type': 'mysql'}

2.字典转换为json串

# (1)dumps()方法
stus = {'xiaojun':'123456','xiaohei':'7891','abc':'11111'}
res2 = json.dumps(stus)   #先把字典转成json
print(res2)
print(type(res2))
# - dumps()方法:把字典转换为json串
with open('stus.txt','w',encoding='utf-8') as f: # 打开文件
    f.write(res2)  #在文件里写入转成的json串


# - 使用.dumps()方法前,要先打开文件,再写入:
stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}
res2 = json.dumps(stus,indent=8,ensuer_ascii=False)
print(res2)
with open("stus.json",'w‘,encoding='utf-8') as f # 使用.dumps()方法是要写入
    f.write(res2)




#(2)dump()方法
stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}
f = open('stus2.json','w',encoding='utf-8')
json.dump(stus,f,indent,ensure_ascii=False)

dump()不需要使用.write()方法,只需要写那个字典,那个文件即可;而.dumps()需要使用.write()方法写入.

如果把字典写到文件里面的时候,dump()好用;但是如果不需要操作文件,或需要把内容存储到数据库何excel,则需要使用dumps()先把字典转换成字符串,再写入.

  • dump\dumps参数
    dumps/dump中使用参数indent,为字符串转行 + 缩进:
res2=json.dumps(stus.indent=4)
print(res2)#打印字符串
#结果为: 
'''
{
    "xiaojun": "123456",
    "xiaohei": "7891",
    "lrx": "hailong",
    "tanailing": "111111"
}
'''

dumps\dump中使用参数 ensure_ascii,为内容输出为中文:

res2 = json.dumps(stus,indent=4,ensure_ascii=False)  # 为False时内容输出显示正常的中文,而不是转码
print(res2)

Attention:

不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值