3 releases
new 0.1.2 | Oct 29, 2024 |
---|---|
0.1.1 | Apr 11, 2019 |
0.1.0 | Mar 19, 2019 |
#503 in Encoding
17KB
401 lines
sorted_json_keys
Rust lib to sort JSON based on string keys and filter json values
Note:
- filter is working based on the keys
- sorted is buggy, need improvements
#[cfg(test)]
mod tests {
use crate::filter::keys::filter;
#[test]
fn test_map_filter() {
let data: serde_json::Value = serde_json::json!({
"foo": "bar",
"config": {
"foo-config": "bar",
"temp": "temppp",
"hector": "tractor"
}
});
let filtered = filter(data, &|key| {
vec!["foo", "config.temp", "config.hector"].contains(&key)
});
let expected = serde_json::json!({
"config": {
"hector": "tractor",
"temp": "temppp"
},
"foo": "bar"
});
assert_eq!(expected, filtered);
// println!("value: {}", serde_json::to_string_pretty(&value).unwrap());
}
#[test]
fn test_list_filter() {
let data: serde_json::Value = serde_json::json!({
"foo": "bar",
"config": [
{
"foo-config": "bar",
"temp": "temppp",
"hector": "tractor"
},
{
"foo-config": "bar1",
"temp": "temppp1",
"hector": "tractor1"
}
]
});
let expected = serde_json::json!({
"foo": "bar",
"config": [
{
"hector": "tractor",
"temp": "temppp"
},
{
"hector": "tractor1",
"temp": "temppp1"
}
]
});
let filtered = filter(data, &|key| {
vec!["foo", "config.[].temp", "config.[].hector"].contains(&key)
});
assert_eq!(expected, filtered);
}
#[test]
fn filter_inner_list() {
let data: serde_json::Value = serde_json::json!({
"foo": "bar",
"config": [
{
"foo-config": "bar",
"temp": [{ "a": 1 }],
"hector": "tractor"
},
{
"foo-config": "bar1",
"temp": [{ "a": 2 }],
"hector": "tractor1"
}
]
});
let filtered = filter(data, &|key| key == "config.[].temp.[].a");
let expected: serde_json::Value = serde_json::json!({
"config": [
{
"temp": [{ "a": 1 }],
},
{
"temp": [{ "a": 2 }],
}
]
});
assert_eq!(expected, filtered);
// println!("value: {}", serde_json::to_string_pretty(&filtered).unwrap());
}
}
Dependencies
~0.7–1.6MB
~35K SLoC