如何"de-stringify" 腌制对象?

How to "de-stringify" pickled object?

我需要序列化一个 pickle 对象并将其转换为字符串。我需要什么类型的转换才能用 pickle.loads() 反序列化它? bytes()bytearray() 没有用...我还需要使用 python 3,所以 cPickle 不是我的选择。

import pickle

hallo = {'lol': 1, 'lel': 2}

hallo = str(pickle.dumps(hallo))
hallo = pickle.loads(bytes(hallo)) # how to cast correctly?

print(hallo)

使用 ast.literal_eval 将值的文字表示转换回其初始值,例如通过对 bytes 对象调用 str 生成的初始值。

import ast
import pickle

hallo = {'lol': 1, 'lel': 2}

hallo = str(pickle.dumps(hallo))
hallo = pickle.loads(ast.literal_eval(hallo))

print(hallo)  # {'lol': 1, 'lel': 2}