comm中實(shí)現(xiàn)基本數(shù)據(jù)的序列化與反序列化
創(chuàng)新互聯(lián)建站主營江安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),江安h5小程序制作搭建,江安網(wǎng)站營銷推廣歡迎江安等地區(qū)企業(yè)咨詢基于jsoncpp庫,由c++編寫,用于為網(wǎng)絡(luò)數(shù)據(jù)提供序列化及反序列化功能
使用的幾個(gè)類
Json::Value 可表示所有的類型,int,float,string等
Json::Reader 將json字符串解析到Value中,反序列化,使用Parse函數(shù)
Json::Writer 將Value轉(zhuǎn)換成json字符串型,序列化
它的兩個(gè)子類:Json::FastWriter 和Json::StyledWriter 兩種不同的顯示風(fēng)格
Makefile
1 ROOT_PATH=$(shell pwd) 2 INCLUDE=-I$(ROOT_PATH)/lib/include 3 LIB=-L$(ROOT_PATH)/lib/lib 4 5 my_json:my_json.o udp_data.o 6 g++ -o $@ $^ $(LIB) -ljsoncpp 7 %.o:%.cpp 8 g++ -c $< $(INCLUDE) 9 .PHONY:clean 10 clean: 11 rm -f *.o my_json
my_json中編寫序列化與反序列化
my_json.h
1 #include2 using namespace std; 3 #include "json/json.h" 4 #include 5 6 class my_json 7 { 8 public: 9 my_json(); 10 ~my_json(); 11 static int serialize(string& _out_str,Json::Value& _out_val); 12 static int deserialize(Json::Value& _val,string& _in_str); 13 14 }; ~
my_json.cpp
1 #include "my_json.h" 2 3 my_json::my_json() 4 {} 5 6 my_json::~my_json() 7 {} 8 9 int my_json::deserialize(Json::Value& _val,string& _in_str) 10 { 11 Json::Reader _read; 12 if(_read.parse(_in_str,_val,false)) 13 { 14 return 0; 15 } 16 return -1; 17 } 18 int my_json::serialize(string& _out_str,Json::Value& _out_val) 19 { 20 #ifdef _DEBUG_ 21 Json::FastWriter _write; 22 _out_str=_write.write(_out_val); 23 #else 24 Json::StyledWriter _write; 25 _out_str=_write.write(_out_val); 26 #endif 27 return 0; 28 }
udp_data中測試序列化與反序列化
udp_data.h
1 #include2 using namespace std; 3 #include 4 5 class udp_data 6 { 7 public: 8 udp_data(); 9 ~udp_data(); 10 void to_string(string& name,string &msg,string& school,string& cmd,strin g& _out_str); 11 void to_value(string& _out_name,string& out_msg,string& out_school,strin g& out_cmd,string& in_str); 12 protected: 13 string _name; 14 string _msg; 15 string _school; 16 string _cmd; 17 };
udp_data.cpp
1 #include "udp_data.h" 2 #include "my_json.h" 3 udp_data::udp_data() 4 :_cmd("None") 5 {} 6 7 udp_data::~udp_data() 8 {} 9 10 void udp_data::to_string(std::string& name,std::string& msg,std::string& sch ool,std::string& cmd,std::string& _out_str) 11 { 12 _name=name; 13 _msg=msg; 14 _school=school; 15 _cmd=cmd; 16 Json::Value root; 17 root["_name"]=_name; 18 root["_msg"]=_msg; 19 root["_school"]=_school; 20 root["_cmd"]=_cmd; 21 my_json::serialize(_out_str,root); 22 } 23 24 void udp_data::to_value(std::string& out_name,std::string& out_msg,std::stri ng& out_school,std::string& out_cmd,std::string& in_str) 25 { 26 Json::Value val; 27 my_json::deserialize(val,in_str); 28 out_name=val["_name"].asString(); 29 out_msg=val["_msg"].asString(); 30 out_school=val["_school"].asString(); 31 out_cmd=val["_cmd"].asString(); 32 _name=out_name; 33 _msg=out_msg; 34 _school=out_school; 35 _cmd=out_cmd; 36 } 37 38 39 int main() 40 { 41 // string out_str; 42 udp_data _data; 43 // string name="xiaozhi"; 44 // string msg="hello world"; 45 // string school="XPU"; 46 // string cmd="None"; 47 // _data.to_string(name,msg,school,cmd,out_str); 48 // cout<序列化運(yùn)行結(jié)果:
反序列化運(yùn)行結(jié)果:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文題目:UDP暢聊系統(tǒng)數(shù)據(jù)的序列化與反序列化-創(chuàng)新互聯(lián)
本文路徑:http://weahome.cn/article/phceh.html