nson

Crates.ionson
lib.rsnson
version0.14.0-rc3
sourcesrc
created_at2017-12-13 09:24:38.296647
updated_at2024-05-28 17:56:38.473915
descriptionNSON is a lightweight data-interchange format like JSON or BSON
homepagehttps://github.com/danclive/nson
repositoryhttps://github.com/danclive/nson
max_upload_size
id42945
size125,209
(danclive)

documentation

https://docs.rs/nson

README

nson

crates.io docs.rs crates.io

NSON is short for NEW JSON, a binary encoded serialization of JSON-like documents. Similar to JSON, NSON supports embedding maps and arrays within other maps and arrays. Unlike JSON, NSON also includes int32/uint32, int64/uint64, f32/f64, binary, timestamp, id types.

NSON borrows from BSON and can be thought of as a streamlined version of BSON, removing some of the less common or mongodb-proprietary types. NSON also categorizes Double into f32 and f64, considering that f64 is not needed in most cases for high-precision floating-point numbers. Also added uint32 and uint64 to make it clear that values cannot be complex.

In the rust language, NSON can be easily written without necessarily serializing/unserializing to structures, thanks to the macro.

In addition, NSON is convenient to parse from binary, and the library implements "no_std", which can be used on microcontrollers.

Example

use nson::m;

fn main() {
    let mut value = m!{
        "code": 200,
        "success": true,
        "payload": {
            "some": [
                "pay",
                "loads",
            ]
        }
    };

    println!("{:?}", value);
    // print: Map{"code": I32(200), "success": Bool(true), "payload":
    // Map{"some": Array([String("pay"), String("loads")])}}

    println!("{:?}", value.get("code"));
    // print: Some(I32(200))

    // insert new key, value
    value.insert("hello", "world");

    println!("{:?}", value.get("hello"));
    // print: Some(String("world"))
}
Commit count: 60

cargo fmt