JSON是现代Web应用程序中使用的主要数据交换协议之一,因为它易于阅读和编写,并且与许多编程语言兼容,包括Python。本文将介绍如何在Python中使用JSON解析和转换字符串。
一、JSON简介
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,它基于JavaScript语言的一个子集。JSON以键值对的形式表示数据,并使用大括号封装对象,用方括号封装数组。JSON的结构和Python中的字典和列表很像。
JSON数据类型:
– 字符串:用双引号表示,例如:”hello world”
– 数字:包括整数和浮点数,例如:12, 3.14
– 布尔值:true, false
– 空值:null
– 对象:用大括号{}表示,例如:{“name”: “Mike”, “age”: 20}
– 数组:用方括号[]表示,例如:[1, 2, 3]
二、JSON字符串转Python对象
Python中有一个内置的json模块,可以将JSON字符串转换为Python对象,例如字典或列表。使用json.loads()方法将JSON字符串解析为Python对象。
import json json_string = '{"name": "Mike", "age": 20}' python_obj = json.loads(json_string) print(python_obj)
输出:
{'name': 'Mike', 'age': 20}
三、Python对象转JSON字符串
同样,可以使用json.dumps()方法将Python对象转换为JSON字符串。
import json python_obj = {'name': 'Mike', 'age': 20} json_string = json.dumps(python_obj) print(json_string)
输出:
{"name": "Mike", "age": 20}
四、编码和解码自定义类
当涉及到自定义类时,json模块需要特殊处理。它无法自动序列化类,但是我们可以定义类的__dict__属性,将其转化为一个可序列化的字典。
import json class Student: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return "Name: %s, Age: %d" % (self.name, self.age) student = Student("Mike", 20) def encode_student(student): if isinstance(student, Student): return {"name": student.name, "age": student.age} return student.__dict__ json_str = json.dumps(student, default=encode_student) print(json_str) decoded_student = json.loads(json_str) print(decoded_student)
输出:
{"name": "Mike", "age": 20} {'name': 'Mike', 'age': 20}
在编码时使用default参数,指定一个函数来处理自定义类。在这里,我们将`Student`类转换为字典类型,其他类型则返回其`__dict__`属性。
五、处理JSON文件
可以使用`json.load()`和`json.dump()`来读写JSON文件。
import json # 写入JSON文件 data = {"name": "Mike", "age": 20} with open("data.json", "w") as f: json.dump(data, f) # 读取JSON文件 with open("data.json", "r") as f: data = json.load(f) print(data)
输出:
{'name': 'Mike', 'age': 20}
六、总结
本文介绍了Python中json字符串的解析和转换。我们学习了JSON的基本概念,如何将JSON字符串转换为Python对象、如何将Python对象转换为JSON字符串,如何处理自定义类,以及如何读写JSON文件。对于处理JSON数据,学习这些知识点是至关重要的。
原创文章,作者:CVSM,如若转载,请注明出处:https://www.506064.com/n/148608.html