【lesson3】服务端Json工具类的设计和实现

文章目录

Json工具类的介绍

主要是对数据进行序列化和反序列化,Json工具类没有成员变量,只设计了成员函数.

这里用到了第三方库Jsoncpp

成员函数

Serialize(序列化)

cpp 复制代码
static bool Serialize(const Json::Value &root, std::string *str)
{
	//1.创建Json::StreamWriterBuilder对象
    Json::StreamWriterBuilder swb;
    //2.创建Json::StreamWriter指对象针
    std::unique_ptr<Json::StreamWriter> sw(swb.newStreamWriter());
	
	//3.序列化Json::Value数据
    std::stringstream ss;//输出型参数
    int ret = sw->write(root, &ss);
    if(ret != 0)
    {
        std::cout << "Serialize failed" << std::endl;
        return false;
    }
    
    //4.str输出型参数,将序列化后数据给str
    *str = ss.str();
    return true;
}

UnSerialize(反序列化)

cpp 复制代码
static bool UnSerialize(const std::string &str, Json::Value *root)
{
	//1.创建Json::CharReaderBuilder对象
    Json::CharReaderBuilder crb;
    //2.创建Json::CharReader对象指针
    std::unique_ptr<Json::CharReader> cr(crb.newCharReader());
	
	//3.反序列化str数据
	//Json::Value *root输出型参数,序列化后的数据放入其中
    std::string errs;//输出型参数,用于判断parse出错原因
    bool ret = cr->parse(str.c_str(), str.c_str() + str.size(), root, &errs);
    if(ret == false)
    {
        std::cout << "UnSerialize failed " << errs << std::endl;
        return false;
    }

    return true;
}
相关推荐
踏着七彩祥云的小丑2 分钟前
Go学习第8天:接口 + 泛型 + 错误处理
开发语言·学习·golang·go
聆风吟º4 分钟前
Python基础数据类型(一):数字类型
开发语言·python·float·int·bool·数字类型
laplaya4 分钟前
C++大型项目组件通信与依赖管理实践
c++·log4j·apache
春栀怡铃声6 分钟前
【C++修仙录03】进阶篇:多态
c++
小灰灰搞电子11 分钟前
C++ boost::container 详解:高性能容器库完全指南
开发语言·c++·boost
Y_Bk14 分钟前
第十七届蓝桥杯C/C++A组省赛
c语言·数据结构·c++·算法·蓝桥杯
Brilliantwxx14 分钟前
【C++】 C++11 知识点梳理(上)
开发语言·c++
飞天狗11115 分钟前
零基础JavaWeb入门——第4课:表单处理 —— 浏览器怎么把数据发给服务器
java·开发语言·前端·后端·servlet
多彩电脑21 分钟前
向AIDE(安卓设备上的Android Studio)导入aar库
android·java·开发语言·androidx
糖果店的幽灵28 分钟前
软件测试接口测试从入门到精通:常见接口类型与数据格式
xml·软件测试·json·接口测试·数据格式