diff --git a/src/shared/json.c b/src/shared/json.c index c3efb11bbb..84ad6dd02b 100644 --- a/src/shared/json.c +++ b/src/shared/json.c @@ -946,6 +946,19 @@ mismatch: return false; } +bool json_variant_is_blank_object(JsonVariant *v) { + /* Returns true if the specified object is null or empty */ + return !v || + json_variant_is_null(v) || + (json_variant_is_object(v) && json_variant_elements(v) == 0); +} + +bool json_variant_is_blank_array(JsonVariant *v) { + return !v || + json_variant_is_null(v) || + (json_variant_is_array(v) && json_variant_elements(v) == 0); +} + JsonVariantType json_variant_type(JsonVariant *v) { if (!v) diff --git a/src/shared/json.h b/src/shared/json.h index 1f9c620ebb..59962049d7 100644 --- a/src/shared/json.h +++ b/src/shared/json.h @@ -120,6 +120,8 @@ static inline bool json_variant_is_null(JsonVariant *v) { } bool json_variant_is_negative(JsonVariant *v); +bool json_variant_is_blank_object(JsonVariant *v); +bool json_variant_is_blank_array(JsonVariant *v); size_t json_variant_elements(JsonVariant *v); JsonVariant *json_variant_by_index(JsonVariant *v, size_t index);