File tree Expand file tree Collapse file tree 1 file changed +32
-20
lines changed
Expand file tree Collapse file tree 1 file changed +32
-20
lines changed Original file line number Diff line number Diff line change @@ -125,38 +125,50 @@ pub trait Generator {
125125 JsonValue :: Null => self . write ( b"null" ) ,
126126 JsonValue :: Array ( ref array) => {
127127 self . write_char ( b'[' ) ;
128- self . indent ( ) ;
129- let mut first = true ;
130- for item in array {
131- if first {
132- first = false ;
133- self . new_line ( ) ;
134- } else {
135- self . write_char ( b',' ) ;
136- self . new_line ( ) ;
137- }
128+ let mut iter = array. iter ( ) ;
129+
130+ if let Some ( item) = iter. next ( ) {
131+ self . indent ( ) ;
132+ self . new_line ( ) ;
138133 self . write_json ( item) ;
134+ } else {
135+ self . write_char ( b']' ) ;
136+ return ;
139137 }
138+
139+ for item in iter {
140+ self . write_char ( b',' ) ;
141+ self . new_line ( ) ;
142+ self . write_json ( item) ;
143+ }
144+
140145 self . dedent ( ) ;
141146 self . new_line ( ) ;
142147 self . write_char ( b']' ) ;
143148 } ,
144149 JsonValue :: Object ( ref object) => {
145150 self . write_char ( b'{' ) ;
146- self . indent ( ) ;
147- let mut first = true ;
148- for ( key, value) in object. iter ( ) {
149- if first {
150- first = false ;
151- self . new_line ( ) ;
152- } else {
153- self . write_char ( b',' ) ;
154- self . new_line ( ) ;
155- }
151+ let mut iter = object. iter ( ) ;
152+
153+ if let Some ( ( key, value) ) = iter. next ( ) {
154+ self . indent ( ) ;
155+ self . new_line ( ) ;
156156 self . write_string ( key) ;
157157 self . write_min ( b": " , b':' ) ;
158158 self . write_json ( value) ;
159+ } else {
160+ self . write_char ( b'}' ) ;
161+ return ;
159162 }
163+
164+ for ( key, value) in iter {
165+ self . write_char ( b',' ) ;
166+ self . new_line ( ) ;
167+ self . write_string ( key) ;
168+ self . write_min ( b": " , b':' ) ;
169+ self . write_json ( value) ;
170+ }
171+
160172 self . dedent ( ) ;
161173 self . new_line ( ) ;
162174 self . write_char ( b'}' ) ;
You can’t perform that action at this time.
0 commit comments