msgpack-javascript
msgpack-javascript copied to clipboard
Support a number as key in object when packing as MAP?
Hi,
I am developing a protocol in a resource constrain platform and suffer from very limited bandwidth. We are using map(integer: any) to transfer messages.
However, this lib only packs objects as map() while the "key" in the object is required to be a string. Using string adds at least additional 2 bytes compared to the integer, while the map(integer: bool or integer) can be only 3 bytes.
I understand this request is not commonly used in the web dev, but it is very useful for us to reduce the bandwidth.
Thanks,
You can already use an Array as the data source of encode()
, so once you "translate" your objects into arrays before passing them to encode()
, the encoded objects will get smaller (and IIUC that's what ProtocolBuffers does).
Thanks for the reply, I will try this method.
I think this is important for interoperability, especially with Python, where integer keys are very common in maps.
To support I would perhaps have three: one that uses plain objects, one that uses Map, and one that calls a function asking whether to use a plain object or a Map when serializing/deserializing.
I have the same issue. Would be fine if we could annotate fields in some TS interface and then it translated automatically into an object with such interface.
same question. Object will automatically convert keys into string type, and Map objects are not supported. How to solve?
object or Map need to encode:
{ 1: 'hello', 2: 'world' }
This is extremely important when encoding sparse arrays with very large indices, e.g. {45319: "foo", 97813: "bar"}
and {[123, 321]: 0.1, [222, 333]: 0.2}