Python内置模块json

1.json模块可以将python的数据格式转换为json格式的数据,也可以将json格式数据转换为python的数据格式
  • json格式,是一个数据格式(本质上就是个字符串,常用于网络数据传输)
  • json格式的作用:跨语言数据传输(语言不同,基础数据类型格式都不同)
2.Python数据类型与json格式相互转换:
  • Python数据类型 -> json,一般称为:序列化
  • json格式 -> Python数据类型,一般称为:反序列化
json模块中常用:
  • json.dumps,序列化生成一个字符串
  • json.loads,反序列化生成python数据类型
  • json.dump,将数据序列化并写入文件
    import json
    
    data = [{"id": 1, "name": "a1", "age": 11}, 
    		{"id": 2, "name": "a2", "age": 22}]
    with open('info.json', mode='w', encoding='utf-8') as f:
    	json.dump(data, f)
    
  • json.load,读取文件中的数据并反序列化为python的数据类型
    import json
    
    with open('info.json', mode='r', encoding='utf-8') as f:
    	data = json.load(f)
    print(data)
    
3. python的数据类型转换为 json 格式,对数据类型是有要求的,默认只支持:
python类型dictlist/tuplestrint/floatTrueFalseNone
json类型objectarraystringnumbertruefalsenull
其他类型如果想要支持,需要自定义JSONEncoder 才能实现,eg:
import json
from decimal import Decimal
from datetime import datetime


data = [{"id": 1, "name": "a1", "age": 11, "size": Decimal("18.88"), "ctime": datetime.now()},
        {"id": 2, "name": "a2", "age": 22, "size": Decimal("9.99"), "ctime": datetime.now()}]


class MyJSONEncoder(json.JSONEncoder):
    def default(self, o):
        if type(o) == Decimal:
            return str(o)
        elif type(o) == datetime:
            return o.strftime("%Y-%M-%d")
        return super().default()


res = json.dumps(data, cls=MyJSONEncoder)
print(res)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值