Python利用jsonpickle库把对象序列化为json

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即可.

posted @ 2023-06-12 17:40  顺其自然,道法自然  阅读(316)  评论(0编辑  收藏  举报