From 946823215bac2c859df843f7b01636f5fda34ed4 Mon Sep 17 00:00:00 2001
From: cheliequan <liequanche@126.com>
Date: 星期五, 13 一月 2023 20:32:23 +0800
Subject: [PATCH] 重构util接口,支持按照key查找json,并转换vector list

---
 util.h |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/util.h b/util.h
index 93bc335..9e643b7 100644
--- a/util.h
+++ b/util.h
@@ -32,12 +32,15 @@
 
 bool bus_dbapi_get(void *handle, const char *topic, google::protobuf::Message &message);
 bool bus_dbapi_get_topic_data(void *handle, const char *topic, crepmsg **pptr_repmsg, size_t len);
+extern "C" int bus_dbapi_get_json_data_by_key(const char * json, const char *flag_key,
+                                                          const char *data_key, char ** pptr_data,
+                                                          yyjson_type *ptr_type);
 extern "C" int bus_dbapi_get_json_data(const char *json, char **pptr_data, uint8_t *ptr_type);
 bool bus_dbapi_get_str(void *handle, const char *topic, char **pptr_str);
 int get_value_by_key(char *json, const char *key, char **pptr_data);
 
 template <class T>
-bool bus_dbapi_get_list(char *json, T &list) {
+bool bus_dbapi_get_list(char      *json, const char *flag_key, const char *data_key, T &list) {
     char *ptr_value = NULL;
     size_t data_len = 0;
     //get the topic json data
@@ -51,7 +54,7 @@
     char *msgdata = (char *)malloc(msglen);
     memset(msgdata, 0, msglen);
 
-    if (0 == bus_dbapi_get_json_data(json, &msgdata, &type)) {
+    if (0 == bus_dbapi_get_json_data_by_key(json, flag_key, data_key, &msgdata, &type)) {
         printf("======>> protomsg: %s\n", msgdata);
     }
 
@@ -95,6 +98,14 @@
 }
 
 template <class T>
+bool bus_dbapi_get_list(char *json, T &list) {
+    const char *success_name = "success";
+    const char *data_name = "data";
+
+    return bus_dbapi_get_list(json, success_name, 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;
@@ -108,4 +119,5 @@
     free_reply_msg(repmsg);
     return iRet;
 }
+
 #endif
\ No newline at end of file

--
Gitblit v1.8.0