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)
{
if (_IS_JSON_CONTEXT(type)) {
jsonw_pretty(_jw, false);
jsonw_end_array(_jw);
jsonw_pretty(_jw, true);
} else if (_IS_FP_CONTEXT(type)) {
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)
{
jsonw_begin(self, '[');
if (self->pretty)
putc(' ', self->out);
}
void jsonw_end_array(json_writer_t *self)
{
if (self->pretty && self->sep)
putc(' ', self->out);
self->sep = '\0';
jsonw_end(self, ']');
}