问题描述
因此,我有一个在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)