【问题标题】:Python: create jsonpickle from a class and unpack, Error AttributeError: type object ' ' has no attribute 'decode'Python:从类创建 jsonpickle 并解包,错误 AttributeError:类型对象“”没有属性“解码”
【发布时间】:2020-11-02 09:41:33
【问题描述】:

所以,我有我在 Flask 应用程序中使用的课程。我在多个页面中使用这个类,这就是为什么我想将创建的类对象保存在一个泡菜中,并在我再次需要它时解包它。它只是不断给我错误..我有一个看起来类似于这样的类:

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)))

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

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

但我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\lib\site-packages\IPython\core\interactiveshell.py", line 3343, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-8-23e9b5d176ac>", line 1, in <module>
    result = jsonpickle.decode(jsonpickle_test, files)
  File "C:\Users\lib\site-packages\jsonpickle\unpickler.py", line 41, in decode
    data = backend.decode(string)
AttributeError: type object 'files' has no attribute 'decode'

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

【问题讨论】:

    标签: python json class jsonpickle


    【解决方案1】:

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

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

    您可以避免unpickable=False 或使用json.loads 将生成的数据加载到字典,然后使用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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多