An open API service indexing awesome lists of open source software.

https://github.com/x2bool/serde_ub_json

UBJSON serialization for Rust using Serde
https://github.com/x2bool/serde_ub_json

deserialization json rust serde serde-json serialization ubjson

Last synced: over 1 year ago
JSON representation

UBJSON serialization for Rust using Serde

Awesome Lists containing this project

README

          

# Serde UBJSON (Universal Binary JSON) ![Latest Version](https://img.shields.io/crates/v/serde_ub_json.svg)

**serde_ub_json** is [UBJSON](https://ubjson.org) serialization format implementation for Rust/Serde

# Why

Structure: this format is structurally equivalent to JSON, and has the same set of data types (**numbers, booleans, strings, arrays and objects**).

Size: null, true and false values are **75% smaller**, large numeric values are **~50% smaller**, array and object containers are **1-byte-per-value smaller**.

Parsing: boolean and numeric values are not encoded as strings - they are represented as bytes and do not require parsing, strings are byte arrays with length, which means they can always be safely deserialized as string slices without data copying.

# How to install

```shell
cargo add serde_ub_json
```

Or add as a dependency in Cargo.toml:

```toml
[dependencies]
serde_ub_json = "0.1"
```

# How to use

```rust
use serde::{Deserialize, Serialize};
use serde_ub_json::{Result, to_bytes, from_bytes};

//...

#[derive(Serialize, Deserialize)]
struct Person {
name: String,
age: u8,
}

//...

let p = Person { name: "John Doe", age: 43 };

let bytes = to_bytes(&p)?; // serialize
let person = from_bytes::<'_, Person>(&bytes)?; // deserialize

assert_eq!(p.name, person.name);
assert_eq!(p.age, person.age);
```

# About

This projects aims to be a complete implementation of UBJSON standard.