Crates.io | json_filter_sorted |
lib.rs | json_filter_sorted |
version | 0.1.4 |
source | src |
created_at | 2019-03-19 05:33:33.638846 |
updated_at | 2024-11-20 12:49:36.023996 |
description | Serde JSON sorted and filter |
homepage | |
repository | https://github.com/AbrarNitk/sorted_json_keys |
max_upload_size | |
id | 122426 |
size | 21,258 |
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());
}
}