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>> {
|
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();
|
let mut sorted_key_values: Vec<(String, Value)> = map
|
||||||
sorted_key_values.sort_by_key(|(key, _)| key.to_owned());
|
.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())
|
Ok(sorted_key_values.into_iter().collect())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user