From ae3d42ef0dab39f4d2b36a361f667818e1ffc026 Mon Sep 17 00:00:00 2001 From: Brian Koropoff Date: Sun, 28 Sep 2014 20:24:35 -0700 Subject: [PATCH] Use the same JSON schema for encoding enums in PrettyEncoder as in Encoder Closes issue #17607 --- src/libserialize/json.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index b936dde6fe4be..ed95fa341b39d 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -668,16 +668,23 @@ impl<'a> ::Encoder 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() ); }