将对象附加到msgpack数据而不先解码它是否有效?
是的,就像那样:然后,
或应该是:
答案 0 :(得分:1)
您只需附加到该文件即可。请查看How to unpack a msgpack file?我的示例代码以阅读写作,您将看到我正在附加,这是有效的。
答案 1 :(得分:0)
扩展 Alex 的回答,因为 https://docs.spring.io/spring-integration/reference/html/jdbc.html#batch-update 仍然没有阐明这一点,而且我不确定如何将该范式转换为其他库。我不确定这是否是官方规范的一部分,但它是最不令人惊讶的实现方式,并且具有直观的意义。如果您想要仅附加的数据格式,这将非常有用。
您应该能够简单地连接任何打包的 msgpack 对象。您的库应提供某种 Unpacker
类,该类采用包含一个或多个串联 msgpack 对象的字节流,并发出解包结构流。如果您的库缺少此功能,您可能需要自己实现。
这是在 python 的 spec 包中的样子:
from io import BytesIO
import msgpack as mp
buf = BytesIO()
buf.write(packer.pack(1))
buf.write(packer.pack(2))
buf.write(packer.pack('foo'))
buf.write(packer.pack(True))
buf.write(packer.pack({"spam":"eggs"}))
print('file contents: {}'.format(buf.getvalue()))
buf.seek(0)
unpacker = mp.Unpacker(buf)
for i, obj in enumerate(unpacker):
print('{}: {} {}'.format(i, repr(obj), type(obj)))
出:
file contents: b'\x01\x02\xa3foo\xc3\x81\xa4spam\xa4eggs'
0: 1 <class 'int'>
1: 2 <class 'int'>
2: 'foo' <class 'str'>
3: True <class 'bool'>
4: {'spam': 'eggs'} <class 'dict'>
如果您想实现自己的,python 回退 msgpack 是非常易读的。