1 个不稳定发布
0.1.0 | 2023年4月15日 |
---|
1519 在 编码
104 每月下载
在 2 个crate中使用(通过 clust)
44KB
901 代码行
让 serde-json-fmt
crate 允许你创建自定义的 serde_json
格式化程序,具有你选择的缩进、分隔符和ASCII要求。
serde_json
本身只直接提供以“紧凑”形式或“美观”形式生成JSON的能力,唯一可自定义的方面是用于美观缩进的字符串。serde-json-fmt
补充了 serde_json
,让你还可以自定义逗号和冒号周围的空白以及是否转义非ASCII字符。
安装
serde-json-fmt
需要 Rust 1.60 或更高版本。要在你的 Cargo 项目中使用 serde-json-fmt
库,请将以下内容添加到你的 Cargo.toml
[dependencies]
serde-json-fmt = "0.1.0"
示例
假设你想以单行“紧凑”形式序列化一个值,但你希望每个冒号和逗号后面都有一个空格,这是 serde_json
的紧凑形式不做的。 serde-json-fmt
允许你这样做
use serde_json::json;
use serde_json_fmt::JsonFormat;
let value = json!({
"colors": ["red", "blue", "taupe"],
"sub": {
"name": "Foo",
"on": true,
"size": 17
}
});
let s = JsonFormat::new()
.comma(", ")
.unwrap()
.colon(": ")
.unwrap()
.format_to_string(&value)
.unwrap();
assert_eq!(
s,
r#"{"colors": ["red", "blue", "taupe"], "sub": {"name": "Foo", "on": true, "size": 17}}"#
);
假设你想以多行“美观”形式格式化一个值,但使用四个空格缩进,并且所有非ASCII字符都编码为 \uXXXX
转义序列。 serde-json-fmt
允许你这样做
use serde_json::json;
use serde_json_fmt::JsonFormat;
let value = json!({
"emojis": {
"goat":"🐐",
"pineapple": "🍍",
"smile": "😀",
},
"greek": {
"α": "alpha",
"β": "beta",
"γ": "gamma",
}
});
let s = JsonFormat::pretty()
.indent_width(Some(4))
.ascii(true)
.format_to_string(&value)
.unwrap();
assert_eq!(s, r#"{
"emojis": {
"goat": "\ud83d\udc10",
"pineapple": "\ud83c\udf4d",
"smile": "\ud83d\ude00"
},
"greek": {
"\u03b1": "alpha",
"\u03b2": "beta",
"\u03b3": "gamma"
}
}"#);
依赖项
~0.5–0.9MB
~19K SLoC