json: fix newline at end of array

The json print library was toggling pretty print at the end of
an array to workaround a bug in underlying json_writer.
Instead, just fix json_writer to pretty print array correctly.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
Stephen Hemminger 2018-02-08 08:26:24 -08:00 committed by David Ahern
parent bff0f25241
commit 6cbd9465bc
2 changed files with 5 additions and 2 deletions

View File

@ -89,9 +89,7 @@ void open_json_array(enum output_type type, const char *str)
void close_json_array(enum output_type type, const char *str) void close_json_array(enum output_type type, const char *str)
{ {
if (_IS_JSON_CONTEXT(type)) { if (_IS_JSON_CONTEXT(type)) {
jsonw_pretty(_jw, false);
jsonw_end_array(_jw); jsonw_end_array(_jw);
jsonw_pretty(_jw, true);
} else if (_IS_FP_CONTEXT(type)) { } else if (_IS_FP_CONTEXT(type)) {
printf("%s", str); printf("%s", str);
} }

View File

@ -180,10 +180,15 @@ void jsonw_end_object(json_writer_t *self)
void jsonw_start_array(json_writer_t *self) void jsonw_start_array(json_writer_t *self)
{ {
jsonw_begin(self, '['); jsonw_begin(self, '[');
if (self->pretty)
putc(' ', self->out);
} }
void jsonw_end_array(json_writer_t *self) void jsonw_end_array(json_writer_t *self)
{ {
if (self->pretty && self->sep)
putc(' ', self->out);
self->sep = '\0';
jsonw_end(self, ']'); jsonw_end(self, ']');
} }