python中经常要保存一些数据, json是一种理想的存储格式, 纯文本的, 也方便阅读, 但有时使用起来不太方便, 比如下面的例子:
a = jsonData['A']
b = jsonData['B']
只能按字典方式引用, 还不支持自动完成, 不如python对象使用方便.
如果定义python类, 使用方便, 但是保存为文件时是二进制的, 不方便查看或者被第三方程序使用.
而jsonpickle
库解决了此问题, 可以把对象序列化为json文本文件, 如下所示:
import jsonpickle
# 定义一个类
class Person:
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
# 创建一个类的实例
person = Person("Alice", 30, "New York")
# 将类的实例保存为JSON格式,并格式化输出
json_string = jsonpickle.encode(person, indent=4)
# 打印JSON字符串
print(json_string)
打印出来的json字符串如下:
{
"py/object": "__main__.Person",
"name": "Alice",
"age": 30,
"city": "New York"
}
反序列化代码:
# 将JSON字符串转换为Python对象
person = jsonpickle.decode(json_string)
# 打印类的实例
print(person.name, person.age, person.city)
输出:
Alice 30 New York
一个小经验
如果有多级嵌套的数据, 最好转换为平面的比较好, 这样json文件看起来比较容易理解.
比如一颗树, 可以把树中的每一个节点分配一个唯一ID, 每一个节点只需要存储其子节点和父节点的ID即可.