From e52dbd2cfdd74040c012c70a1253b9031a085662 Mon Sep 17 00:00:00 2001 From: cheliequan <liequanche@126.com> Date: 星期一, 16 一月 2023 19:49:33 +0800 Subject: [PATCH] 优化接口支持json是数组格式 --- rule.cpp | 8 +++----- util.cpp | 11 ++++++++++- util.h | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/rule.cpp b/rule.cpp index 9215e4a..060cc21 100644 --- a/rule.cpp +++ b/rule.cpp @@ -14,11 +14,9 @@ bool dbapi_get_dayctls(char *timeRules, std::vector<protomsg::DayCtl> & list) { - const char * flag_key = NULL; + bool is_array = true; - const char * data_key = "time_rule"; - - bool ret = bus_dbapi_get_list(timeRules, flag_key, data_key, list); + bool ret = bus_dbapi_get_list(timeRules, is_array, list); return ret; @@ -28,7 +26,7 @@ { const char * flag_key = NULL; - const char * data_key = "time_range"; + const char * data_key = NULL; bool ret = bus_dbapi_get_list(datactls, flag_key, data_key, list); diff --git a/util.cpp b/util.cpp index 42e8db7..26a0dda 100644 --- a/util.cpp +++ b/util.cpp @@ -125,7 +125,16 @@ // Get root["data"] //yyjson_val *msg = yyjson_obj_get(root, "data"); - yyjson_val *data = yyjson_obj_get(root, data_name); + yyjson_val *data; + if ( NULL != data_name ) + { + data = yyjson_obj_get(root, data_name); + } + else + { + data = root; + } + *ptr_type = yyjson_get_type(data); ptr_value = yyjson_val_write(data, YYJSON_WRITE_NOFLAG, &data_len); diff --git a/util.h b/util.h index 3cd6741..5539387 100644 --- a/util.h +++ b/util.h @@ -105,6 +105,24 @@ } template <class T> +bool bus_dbapi_get_list(char *json, bool is_array, T &list) { + char *success_name = NULL; + char *data_name = NULL; + if ( is_array ) + { + success_name = NULL; + data_name = NULL; + } + else + { + success_name = "success"; + data_name = "data"; + } + + return bus_dbapi_get_list(json, (const char *)success_name, (const char *)data_name, list); +} + +template <class T> bool bus_dbapi_get_list(void *handle, const char *topic, T &list) { crepmsg *repmsg = NULL; size_t len = 0; -- Gitblit v1.8.0