about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libextra/json.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libextra/json.rs b/src/libextra/json.rs
index 06b6d0cb29e..3567d5001bd 100644
--- a/src/libextra/json.rs
+++ b/src/libextra/json.rs
@@ -27,6 +27,7 @@ use std::to_str;
 use serialize::Encodable;
 use serialize;
 use sort::Sort;
+use treemap::TreeMap;
 
 /// Represents a json value
 pub enum Json {
@@ -1340,6 +1341,16 @@ impl<A:ToJson + Copy> ToJson for HashMap<~str, A> {
     }
 }
 
+impl<A:ToJson + Copy> ToJson for TreeMap<~str, A> {
+    fn to_json(&self) -> Json {
+        let mut d = HashMap::new();
+        for self.iter().advance |(key, value)| {
+            d.insert(copy *key, value.to_json());
+        }
+        Object(~d)
+    }
+}
+
 impl<A:ToJson> ToJson for Option<A> {
     fn to_json(&self) -> Json {
         match *self {