使用 json 和 jsonpickle 的组合(在 2.7 中)编写了以下两个函数,用于存储和检索任何 Python(内置或用户定义)对象
def save(kind, obj):
pickled = jsonpickle.encode(obj)
filename = DATA_DESTINATION[kind] \\returns file destination to store json
if os.path.isfile(filename):
open(filename, 'w').close()
with open(filename, 'w') as f:
json.dump(pickled, f)
def retrieve(kind):
filename = DATA_DESTINATION[kind] \\returns file destination to store json
if os.path.isfile(filename):
with open(filename, 'r') as f:
pickled = json.load(f)
unpickled = jsonpickle.decode(pickled)
print unpickled
我没有使用用户定义的对象测试这两个函数,但是当我尝试 save() 一个内置的字符串字典时,(即 {'Adam': 'Age 19', 'Bill', 'Age 32 '}),然后我检索相同的文件,我得到相同的 unicode 字典,{u'Adam': u'Age 19', u'Bill', u'Age 32'}。我以为 json/jsonpickle 默认编码为 utf-8,这是怎么回事?
[更新]:删除所有 jsonpickle 编码/解码不会影响输出,仍然是 unicode,似乎是 json 的问题?也许我做错了什么。