env-vars-to-json: Construct JSON from environment variables

CI codecov Crates.io Docs.rs

This crate provides a method 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 use envvarsto_json::EnvVarsToJson;

let json = EnvVarsToJson::builder() .prefix("PREFIX") .separator("_") .build() .expect("Failed to build EnvVarsToJson") .parsefrom_env() .expect("Failed to parse environment variables");

println!("{}", serdejson::tostring_pretty(&json).unwrap()); ```

Ouptut 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"] }

With default json: ```rust use serdejson::json; use envvarstojson::EnvVarsToJson;

let json = EnvVarsToJson::builder() .prefix("PREFIX") .separator("_") .json(json!( { "floatlist": [1.1], "stringlist": ["a", "b"], "boollist": [true, false] } )) .build() .expect("Failed to build EnvVarsToJson") .parsefromenv() .expect("Failed to parse environment variables");

println!("{}", serdejson::tostring_pretty(&json).unwrap()); ```

Output: json { "int_list": [1, 2], "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": [false, false, null, true], "string_list": ["string0", "b"] }

License

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)