9个版本 (5个重大更新)
0.6.1 | 2022年4月16日 |
---|---|
0.6.0 | 2022年4月15日 |
0.5.0 | 2022年4月13日 |
0.4.0 | 2022年4月12日 |
0.1.2 | 2022年4月5日 |
#1773 在 编码
每月下载量3,840次
在 3 crates 中使用
23KB
395 行
用于扁平化JSON对象的强大Rust库
给定一个JSON对象,它会生成另一个包含所有嵌套对象和数组的扁平化对象。用于分隔连接键的字符串以及数组格式化方式可以配置。
注意
- 默认情况下会忽略空数组和对象,但这是可配置的。
- 空键
""
和 JSONnull
值可以无问题使用并且被保留。 - 在扁平化对象后,如果两个或更多键最终相同,则返回错误。
- 传递给扁平化的JSON值必须是一个对象。虽然对象可以包含任何有效的JSON。
用法
在您的Cargo.toml中
[dependencies]
flatten-json-object = "0.6.1"
示例
use flatten_json_object::ArrayFormatting;
use flatten_json_object::Flattener;
use serde_json::json;
let obj = json!({
"a": {
"b": [1, 2.0, "c", null, true, {}, []],
"" : "my_key_is_empty"
},
"" : "my_key_is_also_empty"
});
assert_eq!(
Flattener::new()
.set_key_separator(".")
.set_array_formatting(ArrayFormatting::Surrounded {
start: "[".to_string(),
end: "]".to_string()
})
.set_preserve_empty_arrays(false)
.set_preserve_empty_objects(false)
.flatten(&obj)?,
json!({
"a.b[0]": 1,
"a.b[1]": 2.0,
"a.b[2]": "c",
"a.b[3]": null,
"a.b[4]": true,
"a.": "my_key_is_empty",
"": "my_key_is_also_empty",
})
);
在 examples/from_stdin.rs 中可以找到一个简单的示例,该示例从 stdin
读取 JSON
并将转换后的扁平化 JSON
输出到 stdout
。要运行它,请执行 cargo run --example from_stdin
。
依赖
~0.6–1.4MB
~32K SLoC