jsot 0.2.0

A tiny helper for shipping generic data in a short string.
Documentation

jsot

A tiny helper for shipping generic data in a short string.


What is this?

The crate lets you encode any serde_json::Value into a compact text payload and decode it back.

The string is prefixed with a Transport ID to allow for future compression alternatives.


Quick start

Add to Cargo.toml:

[dependencies]
jsot = "0.1"
serde_json = "1"

Encoding

use jsot::encode;
use serde_json::json;

let value = json!({ "hello": "world" });
let blob = encode(value)?;
assert_eq!("2eyJoZWxsbyI6IndvcmxkIn0=", blob);

Decoding

use jsot::decode;

let blob = "2eyJoZWxsbyI6IndvcmxkIn0=";
let value = decode(blob.as_bytes())?;
assert_eq!(json!({ "hello": "world" }), value);

Format specification

The data format consists of a transport ID byte, followed by Base64 data.

Transport ID Compression Wrapper
'1' Zstd Base64
'2' None Base64

All other IDs are reserved for future considerations.

JSON data is encoded as JSON -> Compression (e.g. Zstd) -> Base64.


License

Dual-licensed under MIT OR Apache-2.0.


Contributing

  • Heads-up: this repository is published for reference only.
  • We are not accepting pull requests, issues, or feature requests at this time.

Why is the code public?

  • To document the wire / file format in a runnable, audited form.
  • To make it easy for other teams to port the encoder/decoder to their own language or stack.