JSON(JavaScript Object Notation)是一种常用的数据交换格式,它使用人类可读的文本来表示数据对象。在Python中,我们可以使用内置的json模块来处理JSON数据。
JSON与Python数据类型的转换
Python的json模块提供了一系列函数来实现JSON数据与Python数据类型之间的转换。
将Python数据类型转换为JSON
import json
# 字典转换为JSON
data = {'name': 'John', 'age': 28}
json_data = json.dumps(data)
print(json_data) # 输出:{"name": "John", "age": 28}
# 列表转换为JSON
data = [1, 'abc', {'foo': [1, 2, 3]}, True]
json_data = json.dumps(data)
print(json_data) # 输出:[1, "abc", {"foo": [1, 2, 3]}, true]
在上面的例子中,我们使用json.dumps()函数将Python数据类型转换为JSON格式的字符串。
将JSON转换为Python数据类型
import json
# JSON转换为字典
json_data = '{"name": "John", "age": 28}'
data = json.loads(json_data)
print(data['name']) # 输出:John
# JSON转换为列表
json_data = '[1, "abc", {"foo": [1, 2, 3]}, true]'
data = json.loads(json_data)
print(data[2]['foo']) # 输出:[1, 2, 3]
在上面的例子中,我们使用json.loads()函数将JSON格式的字符串转换为Python数据类型。
读写JSON文件
Python的json模块还提供了读写JSON文件的功能。
读取JSON文件
import json
with open('data.json', 'r') as f:
data = json.load(f)
print(data)
上面的代码将会从data.json文件中读取JSON数据,并将其转换为Python数据类型。
写入JSON文件
import json
data = {'name': 'John', 'age': 28}
with open('data.json', 'w') as f:
json.dump(data, f)
在上面的例子中,我们使用json.dump()函数将Python数据类型写入到data.json文件中。
自定义JSON序列化与反序列化方法
有时候,我们需要自定义对象的JSON序列化与反序列化方法。可以通过定义对象的__str__()和__dict__()方法来实现。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
def __dict__(self):
return {'name': self.name, 'age': self.age}
person = Person('John', 28)
json_data = json.dumps(person, default=lambda x: x.__dict__)
print(json_data) # 输出:{"name": "John", "age": 28}
data = json.loads(json_data, object_hook=lambda x: Person(x['name'], x['age']))
print(data) # 输出:Person(name=John, age=28)
在上述例子中,我们通过定义__str__()方法返回自定义的字符串表示形式,并通过定义__dict__()方法返回自定义对象的属性字典。然后,在使用json.dumps()和json.loads()时指定相应的参数即可。
以上是Python中处理JSON数据的一些常用操作。通过使用json模块,我们可以简单地将Python数据类型转换为JSON格式的字符串,并且可以轻松地读写JSON文件。此外,我们还可以通过自定义序列化与反序列化方法来处理自定义对象的JSON转换。
本文来自极简博客,作者:星空下的诗人,转载请注明原文链接:Python中的JSON处理与序列化