python 操作 json 文件的种种知识点

简介: Python 提供了内置的 json 模块来处理 JSON 格式的文件。该模块主要分为读取和写入 JSON 文件。
本篇博客将带你全方位了解 Python 操作 json 文件的技术点
让你碰到 json 格式文件不在发愁

json 模块

Python 提供了内置的 json 模块来处理 JSON 格式的文件。

该模块主要分为读取和写入 JSON 文件。

读取 JSON

使用 json.load()json.loads() 方法来读取 JSON 文件。
其中 json.load() 方法用于读取文件中的 JSON 数据,json.loads() 方法用于读取字符串中的 JSON 数据。

写入 JSON

使用 json.dump()json.dumps() 方法来写入 JSON 文件。
其中 json.dump() 方法用于写入 JSON 数据到文件中,json.dumps() 方法用于将 JSON 数据转换为字符串

基于上述内容可以总结一下: json.load() , json.loads() , json.dump() json.dumps() 中的 s 都是字符串 string 的缩写。

读取与写入基本用法如下

提前准备一个 travel.json 文件,存放到 python 文件所在目录。


import json

# 读取json文件
with open('travel.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 写入json文件
with open('travel.new.json', 'w', encoding='utf-8') as f:
    json.dump(data, f)
AI 代码解读
Tops:在使用 json.load()json.loads() 读取 json 文件时,如果==文件中存在格式错误==,会抛出 ValueError 异常。

json 模块进阶用法

控制输出格式

在处理 JSON 文件时,还可以使用 json.dump() 方法的可选参数来控制输出的格式,例如:

  • sort_keys:按照键的字典序排序输出。
  • indent:缩进输出,可以指定缩进的空格数。
import json

# # 读取json文件
with open('travel.json', 'r', encoding='utf-8') as f:
    data = json.load(f)


with open('travel.new.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, sort_keys=True, indent=4)
AI 代码解读

此时可以比对旧文件与新文件之间的差异,可以看到缩进关系产生了变化。

在 JSON 中存储 Python 特殊类型

如果你要在 json 中存储 python 特殊类型,例如 datetime,需要使用 json.JSONEncoder 类和 json.JSONDecoder 类来处理。


import json
from datetime import datetime

# 日期编码
class DateEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        return json.JSONEncoder.default(self, obj)


d = {'date': datetime.now()}
json_str = json.dumps(d, cls=DateEncoder)
print(json_str)

# 日期解码
class DateDecoder(json.JSONDecoder):
    def __init__(self):
        json.JSONDecoder.__init__(self, object_hook=self.dict_to_object)

    def dict_to_object(self, d):
        if 'date' in d:
            d['date'] = datetime.strptime(d['date'], '%Y-%m-%d %H:%M:%S')
        return d


data = json.loads(json_str, cls=DateDecoder)

print(data)
AI 代码解读

运行代码,可以得到编码和解码的输出。

{"date": "2023-01-27 21:24:46"}
{'date': datetime.datetime(2023, 1, 27, 21, 24, 46)}
AI 代码解读

对数据进行验证和清洗

JSON Schema 是一种用于验证 JSON 文档的标准,它可以用来确保 JSON 文档符合预期的格式。

jsonschema 模块需要提前安装,示例代码如下。

import json
import jsonschema

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "number"}
    },
    "required": ["name", "age"]
}

data = '{"name": "梦想橡皮擦", "age": 28}'

try:
    jsonschema.validate(json.loads(data), schema)
    print("可用的JSON")
except jsonschema.exceptions.ValidationError as e:
    print(e)
AI 代码解读

当你的 json 格式正确时,会输出相应的内容,输出错误信息,测试代码可以将 "required": ["name", "age"] 修改为 "required": ["name", "age" , "sex"]

第三方模块

在处理 JSON 格式文件时还可以使用第三方库来更方便地操作,例如 pandas。

import pandas as pd

# 读取json文件
data = pd.read_json('travel.json')

# 写入json文件
data.to_json('travel.pandas.json')
AI 代码解读

还有其他第三方库也可以用来处理 JSON 格式文件,例如:

  • ijson:迭代读取大型 JSON 文件。
  • jsonpickle:支持将 Python 对象序列化为 JSON 格式。
  • jsonlines:简单而高效地读取和写入文本文件中的 JSON 数据。
  • simplejson:提供了一种比标准库更快的 JSON 解析器和生成器。
  • json-tricks:支持一些高级功能,例如压缩和迭代。
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 848 篇原创博客
目录
打赏
0
0
0
0
748
分享
相关文章
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
149 83
探秘文件共享服务之哈希表助力 Python 算法实现
在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
68 28
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
61 20
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
106 8
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
90 7

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等