diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-09-29 08:14:58 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-09-29 08:14:58 -0700 |
| commit | d00cf98ea91280b4ae7d25b6df20baab923af008 (patch) | |
| tree | c358292a16209cdfb0c6e2c40e6c4f6b3f526561 | |
| parent | 1a18258d863c0c887b108cecbd4c726862e6d90c (diff) | |
| parent | ae3d42ef0dab39f4d2b36a361f667818e1ffc026 (diff) | |
| download | rust-d00cf98ea91280b4ae7d25b6df20baab923af008.tar.gz rust-d00cf98ea91280b4ae7d25b6df20baab923af008.zip | |
rollup merge of #17623 : bkoropoff/issue-17607
| -rw-r--r-- | src/libserialize/json.rs | 24 |
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() ); } |
