#json #literals #string-literal #write #ugly

dev json_str

无丑陋字符串地写入JSON字面量

14个版本

使用旧Rust 2015

0.5.2 2018年4月29日
0.5.1 2017年12月18日
0.5.0 2017年1月15日
0.3.4 2016年11月25日
0.3.1 2016年7月4日

#61 in #string-literal

Download history 20/week @ 2024-04-06 26/week @ 2024-04-13 10/week @ 2024-04-20 38/week @ 2024-04-27 48/week @ 2024-05-04 41/week @ 2024-05-11 38/week @ 2024-05-18 46/week @ 2024-05-25 37/week @ 2024-06-01 30/week @ 2024-06-08 26/week @ 2024-06-15 24/week @ 2024-06-22 15/week @ 2024-06-29 8/week @ 2024-07-06 26/week @ 2024-07-13 21/week @ 2024-07-20

74 每月下载
4 crates 中使用

Apache-2.0

15KB
217 代码行数(不含注释)

json_str

Build Status Latest Version

文档和示例

使用 json_str 进行标准化的JSON字面量

let json = json_str!({
    query: {
        query_string: {
            query: "*"
    }
});

使用 json_fn 进行支持变量替换的标准化的JSON

let get_json = json_fn!(|qry| {
    query: {
        query_string: {
            query: $qry
    }
});

let json = get_json("\"some value\"");

还可以参考 serde_json 中的 json 宏。如果您正在构建复杂或动态的结构,尤其是在 stable 上,这将是一个更好的方法。

详情

此crate是构建Rust在stablenightly通道上的json字符串的一种便捷方式。Rust具有类似于json的语法来定义结构,因此很容易将一些有效的Rust令牌树转换为json。此crate在构建String时还会精简空白并标准化引号。

stable上,转换由一个简单的宏提供。在nightly上,转换由一个在编译时而不是运行时对输入进行清理的编译器插件提供。nightly通道还提供了一个创建&str字面量而不是String的替代插件,以避免这种分配。

不要相信用户输入!

json_fn不打算与原始用户输入一起使用。值以原样插入,不进行清理或转义。解析(它也没有设计成安全,它期望信任的输入,因为它直接来自应用程序的二进制文件)在替换任何值之前运行。请确保您适当地验证了您的输入!

无运行时依赖

功能