Fix pcd to_sorted_key_values to sort recursively
This commit is contained in:
parent
8a682b0a7c
commit
1e8a51f37a
22
src/pcd.rs
22
src/pcd.rs
@ -103,10 +103,26 @@ pub trait Pcd<'a>: Serialize + Deserialize<'a> {
|
||||
}
|
||||
|
||||
fn to_sorted_key_values(&self) -> Result<Map<String, Value>> {
|
||||
let map = self.to_value_object()?;
|
||||
let map = self.to_value_object()?;
|
||||
|
||||
let mut sorted_key_values: Vec<(String, Value)> = map.into_iter().map(|(key, value)| (key, value)).collect();
|
||||
sorted_key_values.sort_by_key(|(key, _)| key.to_owned());
|
||||
let mut sorted_key_values: Vec<(String, Value)> = map
|
||||
.into_iter()
|
||||
.map(|(key, value)| {
|
||||
let sorted_value = match value {
|
||||
Value::Object(obj) => {
|
||||
// Recursively sort nested objects
|
||||
let mut sorted_nested: Vec<(String, Value)> = obj.into_iter().collect();
|
||||
sorted_nested.sort_by_key(|(k, _)| k.clone());
|
||||
Value::Object(sorted_nested.into_iter().collect())
|
||||
}
|
||||
_ => value, // Keep other values unchanged
|
||||
};
|
||||
(key, sorted_value)
|
||||
})
|
||||
.collect();
|
||||
|
||||
// Sort top-level keys
|
||||
sorted_key_values.sort_by_key(|(key, _)| key.clone());
|
||||
|
||||
Ok(sorted_key_values.into_iter().collect())
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user