UDP畅聊系统数据的序列化与反序列化
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,comm中实现基本数据的序列化与反序列化基于jsoncpp库,由c++编写,用于为网络数据提供序列化及反序列化功能使用的几个类Json::Value 可表示所有的类型,int,float,string
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
网络安全通用类
平顶山软件开发销售公司
网站怎么向数据库发东西
创建学生逃课的数据库
目前数据库是中文还是英文
微信开发者工具云数据库
数据库无数据可以直接修改吗
深圳测量软件开发公司介绍
软件开发完整项目
数据库默认升序还是降序
文本情感分析数据库
监控服务器一天多少台
上海市菲信网络技术有限公司
漯河电子软件开发招聘
饥荒服务器怎么给管理员权限
潍坊染整管理软件开发公司
山西移动2022年网络安全招标
手游服务器多少钱一台
如何用GENOME数据库
大学专业软件开发
关于数据库三级模式中
mssql数据库脱裤
认证属于网络安全技术吗
网络安全危机的案例与理论
网络安全事件应急演练指南
大班网络安全教育ppt
逆水寒二周年服务器什么意思
软件开发证书报名
计算机网络技术涉及
上海泛微网络技术股份有限公司