about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-09-29 08:14:58 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-09-29 08:14:58 -0700
commitd00cf98ea91280b4ae7d25b6df20baab923af008 (patch)
treec358292a16209cdfb0c6e2c40e6c4f6b3f526561
parent1a18258d863c0c887b108cecbd4c726862e6d90c (diff)
parentae3d42ef0dab39f4d2b36a361f667818e1ffc026 (diff)
downloadrust-d00cf98ea91280b4ae7d25b6df20baab923af008.tar.gz
rust-d00cf98ea91280b4ae7d25b6df20baab923af008.zip
rollup merge of #17623 : bkoropoff/issue-17607
-rw-r--r--src/libserialize/json.rs24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs
index b936dde6fe4..ed95fa341b3 100644
--- a/src/libserialize/json.rs
+++ b/src/libserialize/json.rs
@@ -668,16 +668,23 @@ impl<'a> ::Encoder<io::IoError> for PrettyEncoder<'a> {
         if cnt == 0 {
             escape_str(self.writer, name)
         } else {
+            try!(write!(self.writer, "{{\n"));
             self.curr_indent += self.indent;
-            try!(write!(self.writer, "[\n"));
             try!(spaces(self.writer, self.curr_indent));
+            try!(write!(self.writer, "\"variant\": "));
             try!(escape_str(self.writer, name));
             try!(write!(self.writer, ",\n"));
+            try!(spaces(self.writer, self.curr_indent));
+            try!(write!(self.writer, "\"fields\": [\n"));
+            self.curr_indent += self.indent;
             try!(f(self));
             self.curr_indent -= self.indent;
             try!(write!(self.writer, "\n"));
             try!(spaces(self.writer, self.curr_indent));
-            write!(self.writer, "]")
+            self.curr_indent -= self.indent;
+            try!(write!(self.writer, "]\n"));
+            try!(spaces(self.writer, self.curr_indent));
+            write!(self.writer, "}}")
         }
     }
 
@@ -2651,12 +2658,13 @@ mod tests {
                 let mut encoder = PrettyEncoder::new(writer);
                 animal.encode(&mut encoder).unwrap();
             }),
-            "\
-            [\n  \
-                \"Frog\",\n  \
-                \"Henry\",\n  \
-                349\n\
-            ]".to_string()
+            "{\n  \
+               \"variant\": \"Frog\",\n  \
+               \"fields\": [\n    \
+                 \"Henry\",\n    \
+                 349\n  \
+               ]\n\
+             }".to_string()
         );
     }