python的json库的基本应用

总目录

一、json库的介绍

Python 的 json 库是一个非常常用的库,用于处理 JSON 数据。以下是 json 库的基本功能:

编码(将 Python 对象转换为 JSON 字符串)

解码(将 JSON 字符串转换为 Python 对象)

读写文件

编码器和解码器

二、编码

使用json.dumps()函数,将python对象转换为字符串

三、解码

使用json.loads()将字符串转换为python对象

四、读写文件

(一)将数据写入json文件

使用json.dump()将 Python 对象写入文件,文件以 JSON 格式保存。

其中:

indent=4****参数用于美化输出的 JSON 文件,使其具有可读性的缩进。

(二)从json文件读取,获得python对象

使用json.load()函数,将 JSON 字符串解码成 Python 对象。

五、编码器和解码器

这个比较复杂,牵扯到新建python对象:类、继承、init()函数等内容,请先对以上内容进行了解,再往下看。

(一)创建一个新的python类:NewPerson

通过实例化,可以通过点操作符调用其内部属性

(二)创建新的编码器和解码器

新建NewEncoder()和NewDecoder()函数,来转换指定上面创建的NewPerson数据

复制代码
# 自定义 JSON 编码器
class NewEncoder(json.JSONEncoder):
    def default(self, obj):
        # 检查 obj 是否是 NewPerson 类的实例
        if isinstance(obj, NewPerson):
            # 如果是,返回一个字典表示该对象
            return {'name': obj.name, 'age': obj.age, '__New__': True}
        # 如果 obj 不是 NewPerson 实例,则调用基类的 default 方法
        return json.JSONEncoder.default(self, obj)
    
# 自定义 JSON 解码器
class NewDecoder(json.JSONDecoder):
    def __init__(self):
        # 调用基类的构造函数,并传入自定义的对象钩子函数
        super().__init__(object_hook=self.object_hook)

    # 定义对象钩子函数,用于处理解码后的字典对象
    def object_hook(self, obj):
        # 检查字典中是否包含 '__New__' 键
        if '__New__' in obj:
            # 如果包含,使用字典中的数据创建一个 NewPerson 对象
            return NewPerson(obj['name'], obj['age'],obj['frends'])
        return obj

(三)执行NewPerson的编码和解码

复制代码
n_data= NewPerson('a',2,('b','c','d'))

#编码
new_json = json.dumps(n_data, cls=NewEncoder)
print(new_json)
#解码
decoded_new_person= json.loads(new_json, cls=NewDecoder)
print(type(decoded_new_person))
相关推荐
yaoxin52112318 分钟前
406. Java 文件操作基础 - 字符与二进制流
java·开发语言·python
一勺菠萝丶41 分钟前
macOS 安装 Python 包报错:`externally-managed-environment` 怎么解决?
python
醒李1 小时前
盲人出行辅助系统原型
人工智能·python·目标检测
PILIPALAPENG1 小时前
第4周 Day 3:多 Agent 协作——让 Agent 们"组队干活"
前端·人工智能·python
Omics Pro2 小时前
填补蛋白质组深度学习预处理教学空白
人工智能·python·深度学习·plotly·numpy·pandas·scikit-learn
万邦科技Lafite3 小时前
实战演练:利用京东API一键抓取商品详情
数据库·redis·python·缓存·开放api·淘宝开放平台
TheRouter3 小时前
OpenClaw 上下文瘦身:3 个实验
开发语言·python·ai
日光明媚3 小时前
TensorRT-LLM 中对 wan 加速流程与方法
人工智能·python·计算机视觉·stable diffusion·aigc
Promising_GEO3 小时前
全球综合评估模型-GCAM模型的安装与参数解读
开发语言·python·遥感·空间分析
TechWayfarer5 小时前
IP归属地API实战指南:用IP数据云解析日志挖掘用户地域分布
大数据·开发语言·网络·python·tcp/ip