使用 ProtoBuf-Net,如何(反)序列化多维数组?

Posted

技术标签:

【中文标题】使用 ProtoBuf-Net,如何(反)序列化多维数组?【英文标题】:Using ProtoBuf-Net, how to (de)serialize a multi-dimensional array? 【发布时间】:2010-11-03 18:09:04 【问题描述】:

由于 ProtoBuf-Net 不支持序列化/反序列化多维数组,我将如何管理我的数组?

【问题讨论】:

【参考方案1】:

这本质上是底层 protobuf 线格式的限制;它只支持一维数组。

我想到了两个选项;首先,将其作为线性数组发送,并单独发送维度。

您也可以将其表示为一个对象列表,每个对象具有一个数组——本质上是一个锯齿状数组,但有一个中间步骤。

在这两者中,第一个既简单又高效。

无论哪种方式,如果您要发送整数之类的东西,您应该查看“打包”编码(可通过 options 属性获得) - 这可以进一步减少数组等的有效负载。

【讨论】:

谢谢。那正是我所想。希望谷歌能尽其所能提供一种优雅地处理此案的方法。我猜不是。

以上是关于使用 ProtoBuf-Net,如何(反)序列化多维数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 protobuf-net 序列化/反序列化锯齿状/嵌套数组?

C# Protobuf-net:如何从网络流中连续反序列化?

使用知道架构的 protobuf-net 反序列化未知对象

Protobuf-Net 总是反序列化一个空列表

使用 protobuf-net 反序列化字典

使用 protobuf-net 反序列化不同的列表