当前位置: 首页> 科技> IT业 > 网站建站历史_武汉设计公司排名前十_做百度推广代运营有用吗_商丘 峰少 seo博客

网站建站历史_武汉设计公司排名前十_做百度推广代运营有用吗_商丘 峰少 seo博客

时间:2025/7/10 13:18:52来源:https://blog.csdn.net/qq_45726327/article/details/143931293 浏览次数:0次
网站建站历史_武汉设计公司排名前十_做百度推广代运营有用吗_商丘 峰少 seo博客

JSON模块基础与实战

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于客户端和服务器之间的数据传输。Python 提供了 json 模块来处理 JSON 数据,允许你轻松地将 Python 对象转换为 JSON 格式,反之亦然。下面将总结 json 模块的基础知识,并通过一些实战代码示例来加深理解。

1. json 模块基础

json 模块提供了两个核心功能:

  • 序列化(将 Python 对象转换为 JSON 格式)
  • 反序列化(将 JSON 字符串转换为 Python 对象)
主要函数:
  • json.dump(obj, fp): 将 Python 对象 obj 写入文件对象 fp 中(即序列化)。
  • json.dumps(obj): 将 Python 对象 obj 转换为 JSON 字符串(即序列化)。
  • json.load(fp): 从文件对象 fp 中读取并反序列化 JSON 数据为 Python 对象。
  • json.loads(s): 将 JSON 字符串 s 反序列化为 Python 对象。

2. 常见的 JSON 数据类型

  • 对象(Object):在 Python 中对应 dict 类型
  • 数组(Array):在 Python 中对应 list 类型
  • 字符串(String):在 Python 中对应 str 类型
  • 数字(Number):在 Python 中对应 intfloat 类型
  • 布尔值(Boolean):在 Python 中对应 bool 类型
  • 空值(Null):在 Python 中对应 None 类型

3. JSON 序列化(json.dumpjson.dumps

json.dump

将 Python 对象写入到文件中的 JSON 格式。可以指定额外的参数如 indent 来格式化输出。

import jsondata = {"name": "Alice","age": 30,"is_student": False,"courses": ["Math", "Physics"]
}# 将数据写入文件
with open("data.json", "w") as f:json.dump(data, f, indent=4)
json.dumps

将 Python 对象转换为 JSON 字符串。

import jsondata = {"name": "Bob","age": 25,"is_student": True
}# 将数据转换为 JSON 字符串
json_str = json.dumps(data, indent=4)
print(json_str)

4. JSON 反序列化(json.loadjson.loads

json.load

从文件中读取 JSON 数据并转换为 Python 对象。

import json# 从文件中读取 JSON 数据
with open("data.json", "r") as f:data = json.load(f)print(data)
json.loads

将 JSON 字符串反序列化为 Python 对象。

import jsonjson_str = '{"name": "Charlie", "age": 22, "is_student": true}'# 将 JSON 字符串转换为 Python 对象
data = json.loads(json_str)
print(data)

5. 处理复杂数据类型

JSON 仅支持以下数据类型:dict, list, str, int, float, bool, None。如果 Python 对象包含其他类型,默认会抛出 TypeError 异常。可以通过指定 default 参数来处理自定义类型。

示例:处理自定义对象

假设你有一个 Python 类 Person,需要将其转换为 JSON 格式:

import jsonclass Person:def __init__(self, name, age):self.name = nameself.age = agedef to_dict(self):return {"name": self.name, "age": self.age}# 创建一个 Person 对象
person = Person("David", 40)# 定义一个自定义的 JSON 序列化函数
def person_serializer(obj):if isinstance(obj, Person):return obj.to_dict()raise TypeError(f"Type {type(obj)} not serializable")# 将 Person 对象序列化为 JSON 字符串
json_str = json.dumps(person, default=person_serializer)
print(json_str)

6. 其他选项

  • indent:指定格式化输出的缩进层级,使输出更加美观。
  • separators:定义分隔符,默认情况下 JSON 中键和值之间有一个空格,可以调整为没有空格。
  • sort_keys:指定是否按键排序输出。
import jsondata = {"name": "Alice", "age": 30, "city": "New York"}# 设置序列化选项
json_str = json.dumps(data, indent=2, separators=(",", ": "), sort_keys=True)
print(json_str)

7. 错误处理

使用 json 时,可能会遇到 JSON 编码或解码错误。常见的错误有:

  • JSONDecodeError:当输入的 JSON 数据格式不正确时抛出。
  • TypeError:当 Python 对象不能被序列化为 JSON 时抛出。

例如,无法序列化 set 类型的对象:

import json# 尝试序列化 set 类型数据
data = {1, 2, 3}try:json_str = json.dumps(data)
except TypeError as e:print(f"Error: {e}")

8. 实战示例:API 请求和响应处理

假设你需要处理从 REST API 获取的 JSON 数据。你可以用 requests 库(在实际环境中)来获取数据,并用 json 模块进行解析。

import requests
import json# 假设从 API 获取 JSON 响应
response = requests.get("https://jsonplaceholder.typicode.com/posts")# 解析 JSON 响应
data = response.json()  # 自动调用 json.loads
print(json.dumps(data, indent=4))  # 美化输出
关键字:网站建站历史_武汉设计公司排名前十_做百度推广代运营有用吗_商丘 峰少 seo博客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: