30天拿下Python之使用Json

简介: 30天拿下Python之使用Json

概述

在上一节,我们介绍了如何在Python中使用xml,包括:SAX、DOM、ElementTree等内容。在这一节,我们将介绍如何在Python中使用Json。Json的英文全称为JavaScript Object Notation,中文为JavaScript对象表示法,是一种存储和交换文本信息的语法,类似XML。Json作为轻量级的文本数据交换格式,比XML更小、更快,更易解析,也更易于阅读和编写。

在Python中使用Json非常简单,因为Python有一个内置的json模块,可以专门用来处理Json数据。

Json序列化

在Python中,可以使用json模块将Python对象序列化为Json字符串,这个过程我们称为Json序列化。

import json
data = {
    'Name': 'Lucy',
    'Age': 18,
    'City': 'London'
}
json_data = json.dumps(data)
# 输出:{"Name": "Lucy", "Age": 18, "City": "London"}
print(json_data)



在上面的示例代码中,我们首先导入了json模块,然后创建了一个字典data,最后使用json.dumps()函数将这个字典转换为Json字符串。

Json反序列化

在Python中,可以使用json模块将Json字符串反序列化为Python对象,这个过程我们称为Json反序列化。

import json
json_data = '{"Name": "Lucy", "Age": 18, "City": "London"}'
data = json.loads(json_data)
# 输出:{'Name': 'Lucy', 'Age': 18, 'City': 'London'}
print(data)


在上面的示例代码中,我们首先导入了json模块,然后创建了一个Json字符串json_data,最后使用json.loads()函数将这个Json字符串转换为了Python的字典。

注意:json.loads()函数只能将Json字符串转换为Python对象,而不能直接将Json数据转换为Python对象。如果有一个从网络或文件读取的Json数据,你需要先将其转换为字符串,然后再使用json.loads()函数进行反序列化。

读Json文件

在Python中,可以使用json模块从文件中读取Json数据,并将其反序列化为Python对象。

import json
with open('test.json', 'r') as file:
    data = json.load(file)
    print(data)



在上面的示例代码中,我们首先导入了json模块,然后使用open()函数打开了一个名为test.json 的文件,最后使用json.load()函数从文件中读取Json数据,并将其转换为Python对象。注意:需要确保Json数据是有效的,否则 会抛出json.decoder.JSONDecodeError异常。

写Json文件

在Python中,可以使用json模块将Python对象序列化为Json字符串,并将该字符串写入文件。

import json  
 
data = {
    'Name': 'Lucy',
    'Age': 18,
    'City': 'London'
}
 
with open('test.json', 'w') as file:  
    json.dump(data, file)



在上面的示例代码中,我们首先导入了json模块,然后创建了一个字典data,最后使用json.dump()函数将字典data序列化为Json字符串,并将该字符串写入文件。

将类对象转换为Json

在Python中,可以使用自定义的JSONEncoder类将类对象转换为Json。
import json
from datetime import datetime
class Person:
    def __init__(self, name, birth_date):
        self.name = name
        self.birth_date = birth_date
class PersonEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Person):
            return {
                'Name': obj.name,
                'Birth_date': obj.birth_date.strftime('%Y-%m-%d') if obj.birth_date else None
            }
       
        return super().default(obj)
person = Person('Lucy', datetime.now())
json_str = json.dumps(person, cls = PersonEncoder)
# 输出:{"Name": "Lucy", "Birth_date": "2023-09-03"}
print(json_str)



在上面的示例代码中,我们首先定义了一个名为Person的类,然后创建了一个该类的实例。接下来,我们定义了一个名为PersonEncoder的子类,继承自json.JSONEncoder,并重写了其default方法。该方法会检查传入的对象是否是Person的实例,如果是,则将其转换为一个字典,该字典包含对象的所有属性。最后,我们使用json.dumps()函数将对象转换为Json字符串,并将cls参数设置为PersonEncoder,以便使用我们自定义的编码方式。

将Json转换为类对象

在Python中,可以使用自定义的JSONDecoder类将Json转换为类对象。
import json
from datetime import datetime
class Person:
    def __init__(self, name, birth_date):
        self.name = name
        self.birth_date = birth_date
 
def custom_object_hook(obj):
    return Person(obj['name'], datetime.strptime(obj['birth_date'], '%Y-%m-%d'))
 
json_str = '{"name": "Lucy", "birth_date": "2022-02-02"}'
decoder = json.JSONDecoder(object_hook = custom_object_hook)
person = decoder.decode(json_str)
# 输出:Lucy 2022-02-02 00:00:00
print(person.name, person.birth_date)



在上面的示例代码中,我们首先定义了一个名为Person的类和一个名为custom_object_hook的函数,该函数将对象转换为类的实例。然后,创建了一个json.JSONDecoder对象,并传递了custom_object_hook函数作为参数。最后,我们使用decode方法解析了一个Json字符串,将其转换为Python的字典类型,并通过custom_object_hook函数转换为Person类对象。


相关文章
|
3月前
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
3月前
|
存储 JSON API
Python与JSON:结构化数据的存储艺术
Python字典与JSON格式结合,为数据持久化提供了便捷方式。通过json模块,可轻松实现数据序列化与反序列化,支持跨平台数据交换。适用于配置管理、API通信等场景,兼具可读性与高效性,是Python开发中不可或缺的数据处理工具。
133 0
|
14天前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
2月前
|
JSON 安全 API
Python处理JSON数据的最佳实践:从基础到进阶的实用指南
JSON作为数据交换通用格式,广泛应用于Web开发与API交互。本文详解Python处理JSON的10个关键实践,涵盖序列化、复杂结构处理、性能优化与安全编程,助开发者高效应对各类JSON数据挑战。
140 1
|
7月前
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
8月前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
382 83
|
6月前
|
数据采集 存储 JSON
用Python爬虫抓取数据并保存为JSON的完整指南
用Python爬虫抓取数据并保存为JSON的完整指南
|
7月前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
11月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
346 1
|
12月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
254 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数

推荐镜像

更多