diff options
author | Ron Diskin <rondi@mellanox.com> | 2020-01-23 12:32:27 +0200 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2020-01-27 05:43:54 -0800 |
commit | 98e48e7dd0e5d64752bcdbf07e30baae9b22f636 (patch) | |
tree | ec5fbf11e78b859866396538c5cfb1302f5d7bb8 | |
parent | 31ca29b2bec4020929686eb240fa1abd963819a4 (diff) | |
download | iproute2-98e48e7dd0e5d64752bcdbf07e30baae9b22f636.tar.gz |
json_print: Add new json object function not as array item
Currently new json object opens (and delete_json_obj closes) the object as
an array, what adds prints for the matching bracket '[' ']' at the
start/end of the object. This patch adds new_json_obj_plain() and the
matching delete_json_obj_plain() to enable opening and closing json object,
not as array and leave it to the using function to decide which type of
object to open/close as the main object.
Signed-off-by: Ron Diskin <rondi@mellanox.com>
Reviewed-by: Moshe Shemesh <moshe@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r-- | include/json_print.h | 2 | ||||
-rw-r--r-- | lib/json_print.c | 30 |
2 files changed, 28 insertions, 4 deletions
diff --git a/include/json_print.h b/include/json_print.h index fcc28d5e2..34444793a 100644 --- a/include/json_print.h +++ b/include/json_print.h @@ -31,6 +31,8 @@ enum output_type { void new_json_obj(int json); void delete_json_obj(void); +void new_json_obj_plain(int json); +void delete_json_obj_plain(void); bool is_json_context(void); diff --git a/lib/json_print.c b/lib/json_print.c index fb5f0e5d9..8e7f32dca 100644 --- a/lib/json_print.c +++ b/lib/json_print.c @@ -20,7 +20,7 @@ static json_writer_t *_jw; #define _IS_JSON_CONTEXT(type) ((type & PRINT_JSON || type & PRINT_ANY) && _jw) #define _IS_FP_CONTEXT(type) (!_jw && (type & PRINT_FP || type & PRINT_ANY)) -void new_json_obj(int json) +static void __new_json_obj(int json, bool have_array) { if (json) { _jw = jsonw_new(stdout); @@ -30,18 +30,40 @@ void new_json_obj(int json) } if (pretty) jsonw_pretty(_jw, true); - jsonw_start_array(_jw); + if (have_array) + jsonw_start_array(_jw); } } -void delete_json_obj(void) +static void __delete_json_obj(bool have_array) { if (_jw) { - jsonw_end_array(_jw); + if (have_array) + jsonw_end_array(_jw); jsonw_destroy(&_jw); } } +void new_json_obj(int json) +{ + __new_json_obj(json, true); +} + +void delete_json_obj(void) +{ + __delete_json_obj(true); +} + +void new_json_obj_plain(int json) +{ + __new_json_obj(json, false); +} + +void delete_json_obj_plain(void) +{ + __delete_json_obj(false); +} + bool is_json_context(void) { return _jw != NULL; |