如何用C#MsgPack反序列化[双],[INTS]数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (424)

msgpack-c为我提供了对象作为数组(https://github.com/msgpack/msgpack-c/blob/master/example/cpp03/custom.cpp)。假设我序列化了一个C+消息,如下所示:

template <class T>
        struct Message {
            std::vector<T> data;
            std::vector<int> shape; 
            MSGPACK_DEFINE(data, shape);
        };

且有T == double

如果在C+中反序列化为json,它的内部结构如下[[1.23,3.01,44.02,33],[2,2]]

现在我想在C#与MessagePack-CSharp(https://github.com/neuecc/MessagePack-CSharp)中反序列化它。如果我试图将它转换为json字符串,当我尝试时,我会得到一个空字符串。

var msg = MessagePackSerializer.Deserialize<List<List<double>>>(e.RawData);

我得到

System.InvalidOperationException: code is invalid. code:0 format:positive fixint at MessagePack.Decoders.InvalidArrayHeader.Read (System.Byte[] bytes, Int32 offset, System.Int32& readSize) [0x0001b] in MessagePack/MessagePackBinary.cs:3543

当我尝试:

 [MessagePackObject]
    public class Msg {
        [Key(0)]
        public List<double> data;
            [Key(1)]
        public List<int> shape;
    }

那么如何反序列化在C#MessagePack-CSharp中的[[doubles], [ints]]数组?

提问于
用户回答回答于
var msg = MessagePackSerializer.Deserialize<Msg>(e.RawData);

扫码关注云+社区

领取腾讯云代金券