#streaming-json #json #streaming #no-std

no-std nyoom-json

一个速度极快的JSON序列化库

4个版本 (2个重大更新)

0.3.0 2023年5月16日
0.2.0 2023年5月16日
0.1.1 2023年5月16日
0.1.0 2023年5月16日

#2152 in 编码

每月47次下载

MIT 许可证

46KB
396

nyoom-json : json what goes nyoom

nyoom-json是一个基础流式JSON生成库,专为特定用途构建,追求速度,同时也是no-std!

值得赞赏的地方

nyoom-json在风格上大量借鉴了write-json,并且从miniserde中获取了字符串转义代码。

示例

use nyoom_json::{Serializer, Null};
let mut out = String::new();
let mut ser = Serializer::new(&mut out);

let mut obj = ser.object();
obj.field("kind", "cat");
obj.field("has_been_fed", false);
obj.field("meow_decibels", 45);
obj.field("illness", Null); // good! mew :3
obj.end();
use nyoom_json::Serializer;
let mut out = String::new();
let mut ser = Serializer::new(&mut out);

let mut arr = ser.array();
arr.add(1);
arr.add(2);
arr.add("three");
arr.end();

ser.end();
use nyoom_json::{Serializer, UnescapedStr};
let mut out = String::with_capacity(64);
let mut ser = Serializer::new(&mut out);
let mut arr = ser.array();
    
arr.add_complex(|mut ser| {
    let mut state = ser.object();
    state.field(UnescapedStr::create("mew"), 3);
    state.complex_field(UnescapedStr::create("meow"), |mut ser| {
        let mut seq = ser.array();
        seq.add(3);
        seq.add(2);
    });
});
arr.add("ny");
arr.end();

依赖项

~0.3–0.8MB
~19K SLoC