0
在MsgPack的C API中,为什么msgpack_object类型的键(例如msgpack_object_kv的键字段)?为什么msgpack_object类型的MsgPack键?
https://github.com/msgpack/msgpack-c/blob/master/src/msgpack/object.h
他们为什么不只是msgpack_object_raw?他们可以是任何类型?
在MsgPack的C API中,为什么msgpack_object类型的键(例如msgpack_object_kv的键字段)?为什么msgpack_object类型的MsgPack键?
https://github.com/msgpack/msgpack-c/blob/master/src/msgpack/object.h
他们为什么不只是msgpack_object_raw?他们可以是任何类型?
他们可以是任何类型?
是的。这正是为什么键被表示为msgpack_object
-s。
如果看看maps format specification你可以看到,映射由N
=地图其中内对数来定义:
奇数元素是关键的键和下一个元素是它的关联值
所以你可以自由地使用任何类型的对象的键。
下面是一个例子(与由2双一地图)从test/msgpackc_test.cpp
:
unsigned int map_size = 2;
/* ... */
msgpack_pack_map(&pk, map_size);
msgpack_pack_true(&pk);
msgpack_pack_false(&pk);
msgpack_pack_int(&pk, 10);
msgpack_pack_int(&pk, -10);
正如你可以看到所述第一密钥是一个MSGPACK_OBJECT_BOOLEAN
和第二个是一个MSGPACK_OBJECT_POSITIVE_INTEGER
。