MessagePack es un formato compacto de serialización binaria. Este convertidor admite null, booleanos, strings, números, arrays, mapas con claves de texto, datos binarios, marcas de tiempo, enteros con y sin signo de 64 bits y valores de extensión mediante envoltorios JSON explícitos.
Usa MessagePack cuando ambos extremos implementen versiones compatibles y acuerden el significado de las marcas de tiempo y los códigos de extensión. Conserva los envoltorios $binary, $numberLong, $uint64, $date y $messagePackExt al pasar valores por JSON; de lo contrario, se perderá la información de tipo.
import { encode, decode } from '@msgpack/msgpack';
const value = { hello: 'world' };
const bytes = encode(value);
const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
console.log(hex);
// Output: 81a568656c6c6fa5776f726c64
console.log(decode(bytes));
// Output: { hello: 'world' }
package main
import (
"fmt"
"github.com/vmihailenco/msgpack/v5"
)
func main() {
value := map[string]any{"hello": "world"}
encoded, _ := msgpack.Marshal(value)
fmt.Printf("%x\n", encoded)
// Output: 81a568656c6c6fa5776f726c64
var decoded map[string]any
_ = msgpack.Unmarshal(encoded, &decoded)
fmt.Println(decoded["hello"])
// Output: world
}
<?php
require 'vendor/autoload.php';
use MessagePack\MessagePack;
$value = ['hello' => 'world'];
$encoded = MessagePack::pack($value);
echo bin2hex($encoded) . PHP_EOL;
// Output: 81a568656c6c6fa5776f726c64
$decoded = MessagePack::unpack($encoded);
echo $decoded['hello'] . PHP_EOL;
// Output: world