From 62f8f9e4ee066ecb562de7969180a07cb3d41f57 Mon Sep 17 00:00:00 2001
From: cheliequan <liequanche@126.com>
Date: 星期二, 17 一月 2023 16:40:22 +0800
Subject: [PATCH] 增加根据protobuf转json函数 template <class T> bool bus_dbapi_get_json( T &list, string &json)

---
 dbapi.h    |    2 
 main.cpp   |  120 ++++++++++++++++++++++++++++++++++++++++
 util.cpp   |    2 
 util.h     |   30 ++++++++++
 camera.cpp |   10 +++
 5 files changed, 162 insertions(+), 2 deletions(-)

diff --git a/camera.cpp b/camera.cpp
index 638d4d2..e02a8db 100644
--- a/camera.cpp
+++ b/camera.cpp
@@ -68,4 +68,12 @@
     params.clear();
 
     return ret;
-}
\ No newline at end of file
+}
+
+
+bool dbapi_get_json_by_cameralist(std::vector<protomsg::Camera> &list, string &json) {
+    bool ret = bus_dbapi_get_json(list, json);
+
+    return ret;
+}
+
diff --git a/dbapi.h b/dbapi.h
index e2821f5..7bcf746 100644
--- a/dbapi.h
+++ b/dbapi.h
@@ -27,4 +27,6 @@
 bool dbapi_get_polygons(void *handle, std::vector<protomsg::CameraPolygon> &list);
 bool dbapi_get_polygon_relations(void *handle, std::vector<protomsg::CameraPolygonRelation> &list);
 bool dbapi_get_server_get_is_sys_expired(void *handle);
+bool dbapi_get_json_by_cameralist(std::vector<protomsg::Camera> &list, string &json);
+
 #endif
diff --git a/main.cpp b/main.cpp
index 0262e12..c653594 100644
--- a/main.cpp
+++ b/main.cpp
@@ -64,5 +64,125 @@
         }
     }
 
+    string json;
+    dbapi_get_json_by_cameralist(list, json);
+
+	printf("Camera list to json:%s\n", json.c_str());
+
+
+	/* [
+	{
+		"addr": "璐㈠姟瀹�",
+		"alias": "",
+		"brand": "",
+		"coordTransform": "",
+		"floor": -9999,
+		"id": "2bdee058-43d9-4e95-9ba1-2f56920f6d7c",
+		"ip": "",
+		"is_running": false,
+		"latitude": 0,
+		"linkCams": null,
+		"longitude": 0,
+		"name": "5.152锛堣储鍔″锛�",
+		"password": "",
+		"port": 0,
+		"reserved": "",
+		"resolution_height": 0,
+		"resolution_width": 0,
+		"rtsp": "rtsp://admin:a1234567@192.168.5.152:554/h264/ch1/main/av_stream",
+		"runServerName": "189鏈嶅姟",
+		"run_enable": false,
+		"run_server_id": "DSVAD010120190703",
+		"run_type": -1,
+		"snapshot_url": "192.168.20.189:6700/71,1c82608f5aab92?collection=DSVAD010120190703-persistent",
+		"status": -2,
+		"tasks": [
+			{
+				"hasRule": true,
+				"taskname": "绂诲矖"
+			}
+		],
+		"type": 0,
+		"username": "",
+		"voiceEnable": false,
+		"voiceId": ""
+	},
+	{
+		"addr": "浜у搧鏃�2",
+		"alias": "",
+		"brand": "",
+		"coordTransform": "",
+		"floor": -9999,
+		"id": "d05618a4-7cdd-4b64-888c-2b1c29d3f32a",
+		"ip": "",
+		"is_running": false,
+		"latitude": 0,
+		"linkCams": null,
+		"longitude": 0,
+		"name": "5.151锛堜骇鍝佹梺锛�",
+		"password": "",
+		"port": 0,
+		"reserved": "",
+		"resolution_height": 0,
+		"resolution_width": 0,
+		"rtsp": "rtsp://admin:a1234567@192.168.5.151:554/h265/ch1/main/av_stream",
+		"runServerName": "189鏈嶅姟",
+		"run_enable": false,
+		"run_server_id": "DSVAD010120190703",
+		"run_type": -1,
+		"snapshot_url": "192.168.20.189:6700/72,1c9ea52ffe3560?collection=DSVAD010120190703-persistent",
+		"status": -2,
+		"tasks": [
+			{
+				"hasRule": true,
+				"taskname": "鍏ヤ镜"
+			},
+			{
+				"hasRule": true,
+				"taskname": "浜у搧鍖哄煙浜哄憳绂诲矖"
+			},
+			{
+				"hasRule": true,
+				"taskname": "鑴卞矖"
+			}
+		],
+		"type": 0,
+		"username": "",
+		"voiceEnable": false,
+		"voiceId": ""
+	},
+	{
+		"addr": "娓f补瑁呰溅10鍙�",
+		"alias": "",
+		"brand": "",
+		"coordTransform": "",
+		"floor": -9999,
+		"id": "8be6055f-639c-4ea0-bcec-99b6b5b95499",
+		"ip": "",
+		"is_running": false,
+		"latitude": 0,
+		"linkCams": null,
+		"longitude": 0,
+		"name": "娓f补瑁呰溅10鍙�",
+		"password": "",
+		"port": 0,
+		"reserved": "",
+		"resolution_height": 0,
+		"resolution_width": 0,
+		"rtsp": "rtsp://admin:a1234567@192.168.5.53:554/h264/ch1/main/av_stream",
+		"runServerName": "189鏈嶅姟",
+		"run_enable": true,
+		"run_server_id": "DSVAD010120190703",
+		"run_type": -1,
+		"snapshot_url": "192.168.20.189:6700/72,1c8f82b46690a6?collection=DSVAD010120190703-persistent",
+		"status": -2,
+		"tasks": null,
+		"type": 0,
+		"username": "",
+		"voiceEnable": false,
+		"voiceId": ""
+	}		
+]*/
+
     return 0;
 }
diff --git a/util.cpp b/util.cpp
index 26a0dda..dcfa0eb 100644
--- a/util.cpp
+++ b/util.cpp
@@ -32,7 +32,7 @@
 
 bool proto_to_json(const google::protobuf::Message &message, std::string &json) {
     google::protobuf::util::JsonPrintOptions options;
-    options.add_whitespace = true;
+    options.add_whitespace = false;
     options.always_print_primitive_fields = true;
     options.preserve_proto_field_names = true;
 
diff --git a/util.h b/util.h
index 5539387..fe470fa 100644
--- a/util.h
+++ b/util.h
@@ -38,6 +38,36 @@
 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_json( T &list, string &json) 
+{
+    using TMPT = typename std::remove_reference<decltype(*list.begin())>::type;
+    TMPT t;
+	string jsonString;
+    int len = list.size();
+	bRet = false;
+
+	jsonString += "[";
+	
+    for ( int i= 0 ; i < len ; i++ )
+    {
+     	string tmpjsonString;
+        bRet = proto_to_json(list[i], tmpjsonString);
+		if ( (len > 1) &&(i < len - 1))
+		{
+		    tmpjsonString += ",";
+		}
+		jsonString += tmpjsonString;
+    }	
+
+	jsonString += "]";
+
+	json = jsonString;
+
+}
+
+
 template <class T>
 bool bus_dbapi_get_list(char *json, const char *flag_key, const char *data_key, T &list) {
     char *ptr_value = NULL;

--
Gitblit v1.8.0