当我们需要将Python中的dict(或对象)转化为JSON格式并传递给其他系统时,或者从其他系统获取JSON数据后需要将其转化为Python中的dict(或对象)进行处理时,就需要了解Python中dict(或对象)与JSON之间的互相转化。
将Python中的dict转化为JSON
在Python中,我们可以通过json模块对数据进行序列化和反序列化,序列化即将Python数据类型转化为JSON格式字符串,反序列化即将JSON格式字符串转化为Python数据类型。
Python中的dict可以被简单地转化为JSON格式字符串,示例代码如下所示:
import json
# Python中的dict数据
data = {'name': 'Jack', 'age': 24, 'city': 'Beijing'}
# 将dict转化为JSON格式字符串
json_str = json.dumps(data)
# 输出JSON格式字符串
print(json_str)
输出结果为:{"name": "Jack", "age": 24, "city": "Beijing"}
值得注意的是,Python中dict的key必须是字符串类型,否则无法使用json模块将其转化为JSON格式字符串。
将JSON转化为Python中的dict
同样地,我们也可以将JSON格式字符串转化为Python中的dict类型,示例代码如下所示:
import json
# JSON格式字符串
json_str = '{"name": "Jack", "age": 24, "city": "Beijing"}'
# 将JSON格式字符串转化为Python dict
data = json.loads(json_str)
# 输出Python dict
print(data)
输出结果为:{'name': 'Jack', 'age': 24, 'city': 'Beijing'}
同样地,需要注意的是,JSON格式字符串中的key必须是字符串类型,否则无法使用json模块将其转化为Python中的dict类型。
对象与JSON之间的互相转化
除了Python中的dict类型,我们也可以将Python中的对象转化为JSON格式字符串。需要注意的是,Python中的对象必须继承了JSONEncoder类并实现了其encode方法,才能被序列化为JSON格式字符串。示例代码如下所示:
import json
class User:
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
class UserEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, User):
return {'name': obj.name, 'age': obj.age, 'city': obj.city}
return json.JSONEncoder.default(self, obj)
# Python中的User对象
user = User('Jack', 24, 'Beijing')
# 将User对象转化为JSON格式字符串
json_str = json.dumps(user, cls=UserEncoder)
# 输出JSON格式字符串
print(json_str)
输出结果为:{"name": "Jack", "age": 24, "city": "Beijing"}
同样地,我们也可以通过自定义解码器来将JSON格式字符串转化为Python中的对象,示例代码如下所示:
import json
class User:
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
class UserDecoder(json.JSONDecoder):
def decode(self, s, **kwargs):
data = super().decode(s, **kwargs)
return User(data['name'], data['age'], data['city'])
# JSON格式字符串
json_str = '{"name": "Jack", "age": 24, "city": "Beijing"}'
# 将JSON格式字符串转化为User对象
user = json.loads(json_str, cls=UserDecoder)
# 输出User对象
print(user.__dict__)
输出结果为:{'name': 'Jack', 'age': 24, 'city': 'Beijing'}
通过以上两条示例可以清楚地了解Python中dict(或对象)与JSON之间的互相转化实例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python之dict(或对象)与json之间的互相转化实例 - Python技术站