- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 python 序列化 python 对象以将其存储在我的缓存中。对于此序列化,我使用 json.dumps()
并在将其从缓存中取出后对其进行反序列化,我使用 json.loads()
。我以为这次往返不会有任何麻烦。但正如您在下面看到的那样,它失败了。
>>> import json
>>> from collections import namedtuple
>>> x = {"hello": 1, "goodbye": 2}
>>> y = namedtuple('Struct', x.keys())(*x.values())
>>> y
Struct(goodbye=2, hello=1)
>>> json.loads(json.dumps(y))
[2, 1] # <= I expected this to be the same value as y above!!
为什么 json.dumps/loads 往返有损?我可以使用什么函数来序列化该对象,以便反序列化将保留其原始值?我尝试使用 pickle
但它无法序列化对象。
最佳答案
json
尝试根据对象的类型序列化对象。它不能序列化任何对象,只能序列化“基本”对象,例如 tuple
(转换为方括号,如 list
)、dict
、 >list
...(当然还有整数、字符串、 float )。
使用 isinstance
测试对象时,它在 tuple
上成功,因为 namedtuple
被设计为从 tuple
继承:
y = namedtuple('Struct', x.keys())(*x.values())
print(isinstance(y,tuple))
结果为True
。
因此,在 json
模块的 encoder.py
文件中,您的数据与 iterencode
中的 isinstance
测试相匹配> 方法(下面的代码摘录,在我的 Python 3.4 版本的第 311 行左右):
if isinstance(value, (list, tuple)):
chunks = _iterencode_list(value, _current_indent_level)
因此,任何继承自 list
或 tuple
的类型都会像 list
一样被序列化
此处提出了解决方法:Serializing a Python namedtuple to json
关于python - 为什么 python 的 json.loads/dumps 往返有损?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507113/
我如何使用 PHP 以有损/无损压缩方式压缩图像,这与这两个站点压缩它们的方式类似: https://compressor.io/和 https://kraken.io/web-interface 谢
我不确定应该如何在 Java 中的字符之间“正确”完成 XORing。我见过其他人这样做,但是当我遇到像这样简单的事情时: char a = 'a'; char b = 'b'; char c = (
在保留 alpha 层的同时,建议使用哪种库进行有损 png 压缩。 我经常使用 kraken.io,但希望将其更多地用于工作流程。 我对无损压缩了解很多,但我对它们的有损压缩方式一无所知。 最佳答案
正在关注 this发布我决定写一个 marble test对于这个运算符(operator)。 这是一个基本的测试: it('Test lossy zip', () => { const
我是一名优秀的程序员,十分优秀!