UDP畅聊系统数据的序列化与反序列化
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,comm中实现基本数据的序列化与反序列化基于jsoncpp库,由c++编写,用于为网络数据提供序列化及反序列化功能使用的几个类Json::Value 可表示所有的类型,int,float,string
千家信息网最后更新 2024年10月17日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安全错误
数据库的锁怎样保障安全
企业微信 查询数据库
服务器免费试用
并行数据库和分布式数据库
好的数据库具有什么特点
网络安全支撑招聘职位信息
输入网络安全密钥无法连接
国泰安数据库如何转化百分比
松江区常规软件开发常见问题
软件开发人员外包服务报价
广东ai服务器批发厂家
鬼杀服务器
中转服务器抽水怎么抽
皮书数据库阅读器
烟台网络安全专家
初中学校网络安全制度
网络安全中心CSC
数据库软件 推荐
中央家庭教育与网络安全视频
紫田网络安全科技馆
南阳网络安全网
做java后端不会数据库
网络安全征集活动广西
光传输和网络技术哪个好
数据库外部关键字例子
数据库归档日志放在本地
学习软件开发的电脑
中国统计年鉴数据库网
数据库每人的年龄增加2岁
科通时代网络技术
常德微信营销软件开发