#json #macro #compile-time #literals #tokens #pointers #extract

nightly static-json-pointer

在编译时查询静态 JSON 中的值和标记

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018 年 4 月 20 日

#129 in #tokens

MIT 许可证

7KB
63 代码行

static-json-pointer

宏,用于从 JSON 模式中提取 Rust 标记和文字

如果你有一个文件 schema.json

{
    "person": {
        "name": {
            "type": "String",
            "value": "Zazu"
        },
        "age": {
            "type": "Option<u32>",
            "value": 42
        }
    }
}

你可以使用 JSON 指针来指定在编译时从 JSON 中提取标记或文字的字段

#![feature(proc_macro)]
extern crate static_json_pointer;
use static_json_pointer::json_token;

// let name = String::from("Zazu");
let name = json_token!("schema.json", "/person/name/type")::from(json_literal!("schema.json", "/person/name/value"));

// let age = Option<u32>::from(42);
let age = json_token!("schema.json", "/person/age/type")::from(json_literal!("schema.json", "/person/age/value"));

assert_eq!(name, "Zazu".to_string());
assert_eq!(age, Some(42));

反序列化的 JSON 在构建过程中进行缓存,以防止在构建过程中重复读取和解析。

依赖项

~0.7–1.2MB
~26K SLoC