This crate provides methods to construct serde_json::Value
from environment variables.
Examples:
Given environemnt variables, with prefix PREFIX
and separator __
:
bash
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
Without default json: ```rust,norun use serdejson::json; use envvarsto_json::Parser;
let json = Parser::default() .withprefix("PREFIX") .withseparator("_") .parsefrom_env() .expect("Failed to parse environment variables");
asserteq!(json, json!( { "intlist": [1, 2], "struct": { "int": 1, "float": 1.1, "string": "string", "boollist": [true, false], "struct": { "int": 1, "string": "string", "boollist": [true, false] } }, "boollist": [false, null, null, true], "stringlist": ["string0"] } )) ```
With default json and filters (require feature filter
enabled):
```rust,feature=filter,norun
use serdejson::json;
use envvarsto_json::Parser;
let json = Parser::default() .withprefix("PREFIX") .withseparator("") .withinclude(&[".*STRUCT.*"]) .withexclude(&[".INT_LIST.", "PREFIXBOOLLIST.*"]) .withjson(json!( { "floatlist": [1.1], "stringlist": ["a", "b"], "boollist": [true, false] } )) .parsefrom_env() .expect("Failed to parse environment variables");
asserteq!(json, json!(
{
"floatlist": [1.1],
"struct": {
"int": 1,
"float": 1.1,
"string": "string",
"boollist": [true, false],
"struct": {
"int": 1,
"string": "string",
"boollist": [true, false]
}
},
"boollist": [true, false],
"stringlist": ["a", "b"]
}
));
```
Licensed under either of * Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) * MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.