增加根据protobuf转json函数
template <class T>
bool bus_dbapi_get_json( T &list, string &json)
| | |
| | | params.clear(); |
| | | |
| | | return ret; |
| | | } |
| | | } |
| | | |
| | | |
| | | bool dbapi_get_json_by_cameralist(std::vector<protomsg::Camera> &list, string &json) { |
| | | bool ret = bus_dbapi_get_json(list, json); |
| | | |
| | | return ret; |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | } |
| | | } |
| | | |
| | | 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": "渣油装车10号", |
| | | "alias": "", |
| | | "brand": "", |
| | | "coordTransform": "", |
| | | "floor": -9999, |
| | | "id": "8be6055f-639c-4ea0-bcec-99b6b5b95499", |
| | | "ip": "", |
| | | "is_running": false, |
| | | "latitude": 0, |
| | | "linkCams": null, |
| | | "longitude": 0, |
| | | "name": "渣油装车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; |
| | | } |
| | |
| | | |
| | | 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; |
| | | |
| | |
| | | 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; |