UBJSON to JSON

About UBJSON

What is UBJSON?

Universal Binary JSON is a binary serialization format for JSON values. It supports typed numbers, strings, arrays, objects, binary byte arrays, and optimized typed containers.

When to use UBJSON?

Use UBJSON when you need compatibility with systems that already emit Universal Binary JSON, especially for numeric arrays or typed binary data. For new protocols, compare library support against MessagePack and CBOR.

UBJSON in JavaScript

const UBJSON = require('ubjson');

// The npm package is legacy; use it mainly for compatibility with existing UBJSON data.
const value = { hello: 'world' };
const buffer = Buffer.alloc(1024);
const offset = UBJSON.packToBufferSync(value, buffer);
const encoded = buffer.subarray(0, offset);

console.log(encoded.toString('hex'));
UBJSON.unpackBuffer(encoded, (error, decoded) => {
	if (error) throw error;
	console.log(decoded);
});
			

UBJSON in Go

package main

import (
	"fmt"

	"github.com/jmank88/ubjson"
)

func main() {
	value := map[string]any{"hello": "world"}
	encoded, _ := ubjson.Marshal(value)
	fmt.Printf("%x\n", encoded)

	var decoded map[string]any
	_ = ubjson.Unmarshal(encoded, &decoded)
	fmt.Println(decoded["hello"])
	// Output: world
}
				

UBJSON in PHP

<?php
// PHP does not have a widely used maintained UBJSON package.
// This writes the common optimized uint8 array form used for binary payloads.
$bytes = "\x01\x02\x03";
$encoded = '[' . '$' . 'U' . '#' . 'U' . chr(strlen($bytes)) . $bytes;

echo bin2hex($encoded) . PHP_EOL;
// Output: 5b2455235503010203