mod encoders;
mod normalize;
mod primitives;
mod types;
mod writer;
pub use types::{Delimiter, EncodeOptions};
pub use serde_json;
use normalize::normalize_value;
use encoders::encode_value;
pub fn encode(value: &serde_json::Value, options: Option<EncodeOptions>) -> String {
let opts = options.unwrap_or_default();
let normalized = normalize_value(value);
encode_value(&normalized, &opts)
}
#[cfg(test)]
mod tests {
use super::*;
use serde_json::json;
#[test]
fn test_simple_object() {
let data = json!({"id": 123, "name": "Ada"});
let result = encode(&data, None);
assert!(result.contains("id: 123"));
assert!(result.contains("name: Ada"));
}
#[test]
fn test_primitive_array() {
let data = json!({"tags": ["reading", "gaming"]});
let result = encode(&data, None);
assert_eq!(result, "tags[2]: reading,gaming");
}
#[test]
fn test_empty_object() {
let data = json!({});
let result = encode(&data, None);
assert_eq!(result, "");
}
}