UDP畅聊系统数据的序列化与反序列化
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,comm中实现基本数据的序列化与反序列化基于jsoncpp库,由c++编写,用于为网络数据提供序列化及反序列化功能使用的几个类Json::Value 可表示所有的类型,int,float,string
千家信息网最后更新 2026年10月31日UDP畅聊系统数据的序列化与反序列化
comm中实现基本数据的序列化与反序列化
基于jsoncpp库,由c++编写,用于为网络数据提供序列化及反序列化功能
使用的几个类
Json::Value 可表示所有的类型,int,float,string等
Json::Reader 将json字符串解析到Value中,反序列化,使用Parse函数
Json::Writer 将Value转换成json字符串型,序列化
它的两个子类:Json::FastWriter 和Json::StyledWriter 两种不同的显示风格
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::Valueval; 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<序列化运行结果:

反序列化运行结果:

序列
数据
字符
字符串
结果
运行
不同
两个
函数
功能
子类
类型
网络
风格
c++
中实
测试
系统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会主任
鸠鸠互联网科技
杭州互联网科技公司
汇久创客互联网科技
融势互联网科技
润盈互联网科技
天下捷融互联网科技
互联网养老 桔豆科技
互联网金融科技委员会
科技类的互联网平台
欧洲十大科技互联网公司
北京华百购互联网科技有限公司
厦门千工互联网科技有限公司
搜狐科技互联网
哈尔滨屹滨互联网科技有限公司
高科技互联网发展前景如何
朱啸虎曾投资哪些互联网科技企业
滨湖区互联网智能科技产品有哪些
上海乐五互联网科技有限公司
北京瑞云互联网科技有限公司
深圳恒合互联网络科技有限公司
科技和互联网公司
为想互联网科技
互联网教育科技公司vipkid
科技与互联网哪个更好
花神(南京)互联网科技有限公司
深圳育鹏互联网科技有限公司招聘
互联网科技快讯热点
中国科技和美国互联网
知域互联网科技有限公司官网