Python:从类创建jsonpickle并解压,错误AttributeError:类型对象''没有属性'decode'

问题描述

因此,我有一个在Flask应用程序中使用的类。我在多个页面中使用该类,这就是为什么我想将creates类对象保存在一个pickle中,并在需要时将其解压缩的原因。它只会不断给我带来错误。.我有一个类似于以下内容的类:

FROM PHP:7.3-fpm-alpine

RUN docker-PHP-ext-install pdo pdo_MysqL

并且我正在尝试像这样创建jsonpickle:

class files(name):

    def __init__(self,name):
        self.name = name
        self.settings = Settings()
        self.files_directory = self.settings.files_directory
        self.files = self.create_list()

    def store_files_from_folder(self):
        loaded_files = []
        files = list_files()

        for file in files:
            file_path = os.path.join(self.files_directory,file)
            print('Loading file: {}'.format(file))
            loaded_file = function_reads_in_files_from_folder(file_path,self.name)
            loaded_files.append(loaded_file)

        print('Loaded {} files'.format(len(loaded_files)))

但是出现以下错误

creates_class = files("Mario")
jsonpickle_test = jsonpickle.encode(creates_class,unpicklable=False)
result = jsonpickle.decode(jsonpickle_test,files)

我无法解决它。有人可以帮我吗?

解决方法

问题在于传递的参数 unpickable=False

unpicklable – 如果设置为 False,则输出将不包含将 JSON 数据转回 Python 对象所需的信息,但会生成更简单的 JSON 流。

您可以避免使用 unpickable=False 或使用 json.loads 将生成的数据加载到 dict,然后使用 de kwargs 参数创建对象

creates_class = files("Mario")
jsonpickle_test = jsonpickle.encode(creates_class,unpicklable=False)
result_dict = json.loads(jsonpickle_test)
create_class = files(**result_dict)