当前位置:主页 > python教程 > Python操作JSON

Python操作JSON文件的知识点整理

发布:2023-03-11 15:00:01 59


给大家整理了相关的编程文章,网友逢弘博根据主题投稿了本篇教程内容,涉及到Python操作JSON知识点、Python操作JSON、Python、JSON、Python操作JSON相关内容,已被456网友关注,内容中涉及的知识点可以在下方直接下载获取。

Python操作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)

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)

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

在 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)

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

{"date": "2023-01-27 21:24:46"}
{'date': datetime.datetime(2023, 1, 27, 21, 24, 46)}

对数据进行验证和清洗

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)

当你的 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')

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

  • ijson:迭代读取大型 JSON 文件。
  • jsonpickle:支持将 Python 对象序列化为 JSON 格式。
  • jsonlines:简单而高效地读取和写入文本文件中的 JSON 数据。
  • simplejson:提供了一种比标准库更快的 JSON 解析器和生成器。
  • json-tricks:支持一些高级功能,例如压缩和迭代。

到此这篇关于Python操作JSON文件的知识点整理的文章就介绍到这了,更多相关Python操作JSON内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • python如何开发软件

    发布:2020-07-26

    python当然可以开发软件,Python的主要用途之一就是软件开发。如基于控制台的应用程序、基于音频或视频的应用程序、3D CAD应用程序、Web应用程序等等。


  • Python生成便签图片的方法总结

    发布:2019-08-07

    python现在火热的程度相信不用过多介绍了,下面这篇文章主要给大家介绍了关于利用Python如何生成便签图片的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的


  • Python的OptionParser模块示例教程

    发布:2023-03-02

    这篇文章主要介绍了Python的OptionParser模块教程,本文通过示例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • Python Opencv实战之印章提取的实现

    Python Opencv实战之印章提取的实现

    发布:2022-07-07

    给大家整理了关于Python的教程,很多时候我们需要电子版的章,但有些同学并不会通过Photoshop抠图获取。因此本文将利用Python OpenCV来实现印章的提取,感兴趣的可以了解一下


  • Python使用Counter进行字典创建以及key数量统计的实例内容

    发布:2019-07-31

    今天小编就为大家分享一篇Python中使用Counter进行字典创建以及key数量统计的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • 《Python Linux系统管理与自动化运维》学习总结

    发布:2018-12-01

    1. 1秒钟启动一个下载服务器 在要访问文件的目录下执行:python3 -m http.server 在网页上访问:http://ip:8000/ 就可以下载该目录下的文件(windows中也可以用) 2. python 一行试解析json echo {job: developer, name: lmx, sex: male} | python -m json.tool cat 1.txt | python -m json.tool (1.txt中是json类型的数据) 3.检查第三方库是否正确安装 如


  • 利用numba让python速度提升百倍

    利用numba让python速度提升百倍

    发布:2022-06-14

    给网友们整理关于python的教程,这篇文章主要介绍了利用numba让python速度提升百倍,python由于它动态解释性语言的特性,numba是一款可以将python函数编译为机器代码的JIT编译器,下面针对numba相关内容展开,需要的小伙伴可以参考一下


  • 《python cookbook》评价、笔记

    发布:2019-07-07

    这本书适合有一定Python基础的用户读,告诉你库使用的最佳实践的,刚开始接触库的时候可以参考用。它本身的内容组织就是针对一个问题一个解。个人认为是本好书,在学习使用库时省去了很


网友讨论