7个版本
0.1.6 | 2023年6月6日 |
---|---|
0.1.5 | 2023年6月5日 |
43 在 #env-var
每月49 次下载
33KB
780 行
env-vars-to-json: 从环境变量构建JSON
此crate提供从环境变量构建 serde_json::Value
的方法。
示例
给定环境变量,具有前缀 PREFIX
和分隔符 __
export PREFIX__INT_LIST__0=1
export PREFIX__INT_LIST__1=2
export PREFIX__STRUCT__INT=1
export PREFIX__STRUCT__STRING=string
export PREFIX__STRUCT__BOOL_LIST__0=true
export PREFIX__STRUCT__BOOL_LIST__1=false
export PREFIX__STRUCT__STRUCT__INT=1
export PREFIX__STRUCT__STRUCT__STRING=string
export PREFIX__STRUCT__STRUCT__BOOL_LIST__0=true
export PREFIX__STRUCT__STRUCT__BOOL_LIST__1=false
export PREFIX__BOOL_LIST__3=true
export PREFIX__STRUCT__FLOAT=1.1
export PREFIX__BOOL_LIST__0=false
export PREFIX__STRING_LIST__0=string0
无默认JSON:
use serde_json::json;
use env_vars_to_json::Parser;
let json = Parser::default()
.with_prefix("PREFIX")
.with_separator("__")
.parse_from_env()
.expect("Failed to parse environment variables");
assert_eq!(json, json!(
{
"int_list": [1, 2],
"struct": {
"int": 1,
"float": 1.1,
"string": "string",
"bool_list": [true, false],
"struct": {
"int": 1,
"string": "string",
"bool_list": [true, false]
}
},
"bool_list": [false, null, null, true],
"string_list": ["string0"]
}
))
具有默认JSON和过滤器(需要启用 filter
功能):
use serde_json::json;
use env_vars_to_json::Parser;
let json = Parser::default()
.with_prefix("PREFIX")
.with_separator("__")
.with_include(&[".*STRUCT.*"])
.with_exclude(&[".*INT_LIST.*", "PREFIX__BOOL_LIST.*"])
.with_json(json!(
{
"float_list": [1.1],
"string_list": ["a", "b"],
"bool_list": [true, false]
}
))
.parse_from_env()
.expect("Failed to parse environment variables");
assert_eq!(json, json!(
{
"float_list": [1.1],
"struct": {
"int": 1,
"float": 1.1,
"string": "string",
"bool_list": [true, false],
"struct": {
"int": 1,
"string": "string",
"bool_list": [true, false]
}
},
"bool_list": [true, false],
"string_list": ["a", "b"]
}
));
许可证
许可协议为以下之一
- Apache License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖
~0.7–2.3MB
~46K SLoC