gpt4 book ai didi

python - 'dict_items' 类型的对象不是 JSON 可序列化的

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:22 25 4
gpt4 key购买 nike

如何将 dict_item 保存到 json 文件以在其他地方加载它?我在浏览器中获取带有 js 的列表并返回到 python,但我无法将其保存为 Json 文件,因为它说:

Object of type 'dict_items' is not JSON serializable

Javascript 提取列表:

var items = {}, ls = window.localStorage;
for (var i = 0, k; i < ls.length; i++)
items[k = ls.key(i)] = ls.getItem(k);
return items;

堆栈跟踪:

Traceback (most recent call last):
File "tester.py", line 9, in <module>
obj.store()
File "F:\project\zw\zwp.py", line 69, in store
json.dump(session_ls, fp)
File "c:\users\dkun\appdata\local\programs\python\python36\Lib\json\__init__.py", line 179, in dump
for chunk in iterable:
File "c:\users\dkun\appdata\local\programs\python\python36\Lib\json\encoder.py", line 437, in _iterencode
o = _default(o)
File "c:\users\dkun\appdata\local\programs\python\python36\Lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'dict_items' is not JSON serializable

存储数据的代码:

storage = LocalStorage(self.driver)
session_ls = storage.get().items()
with open('../assets/tmp/session.json', 'w') as fp:
json.dump(session_ls, fp)

如果我运行的内容:

print(repr(session_ls))

dict_items([('Dexie.DatabaseNames', '["wawc"]'), ('Gds7Zz7akA==', 'false'), ('BrowserId', '"A=="'), ('LangPref', '"en"'), ('SecretBundle', '{"key":"X=","encKey":"X","macKey":"X="}'), ('Token1', '"Y="'), ('Token2', '"1=="'), ('Y==', 'false'), ('debugCursor', '263'), ('l==', '[{"id":"global_mute","expiration":0}]'), ('logout-token', '"1=="'), , ('remember-me', 'true'), ('storage_test', 'storage_test'), ('==', 'false'), ('mutex', '"x19483229:init_15"')])

最佳答案

您遇到的问题是:

session_ls = storage.get().items()

为什么是 .items()?与 Python 2 不同,在 Python 3 中,这是一个 View 对象。所以我可以看到两种可能的解决方案:

session_ls = storage.get()

这会给你一个字典,它可以传递给 json.dump()。或者,如果你真的需要 session_ls 成为项目,你可以尝试:

session_ls = list(storage.get().items())

或:

json.dump(list(session_ls), fp)

关于python - 'dict_items' 类型的对象不是 JSON 可序列化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48374667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com