pacifica 0.1.0

Rust SDK for pacifica.fi 🦀
Documentation
use serde::Serialize;
use serde_json::{Map, Value};

fn sort_json_value(v: Value) -> Value {
    match v {
        Value::Object(map) => {
            let mut entries: Vec<(String, Value)> = map.into_iter().collect();
            entries.sort_by(|a, b| a.0.cmp(&b.0));

            let mut new_map = Map::with_capacity(entries.len());
            for (k, val) in entries {
                new_map.insert(k, sort_json_value(val));
            }
            Value::Object(new_map)
        }
        Value::Array(arr) => Value::Array(arr.into_iter().map(sort_json_value).collect()),
        _ => v,
    }
}

pub fn to_sorted_json<T: Serialize>(value: &T) -> String {
    let v = serde_json::to_value(value).expect("serialize");
    serde_json::to_string(&sort_json_value(v)).expect("stringify")
}