【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;
}
相关推荐
郭涤生1 分钟前
std::async 和 std::future的使用
c++
墨韵流芳9 分钟前
CCF-CSP第41次认证第一题——平衡数
c++·算法·ccf·平衡数
电商API&Tina11 分钟前
唯品会数据采集API接口||电商API数据采集
java·javascript·数据库·python·sql·json
AI+程序员在路上13 分钟前
新手进入嵌入式行业方法与方向选择
c语言·开发语言·单片机·嵌入式硬件
dovens13 分钟前
GO 快速升级Go版本
开发语言·redis·golang
芦芭荞18 分钟前
QT之TCP/IP通讯
开发语言·qt·tcp/ip
zero159721 分钟前
Python 8天极速入门笔记(大模型工程师专用):第三篇-列表与字典(Python核心数据结构,大模型必备)
开发语言·python·ai编程
书到用时方恨少!26 分钟前
Python 零基础入门系列(十一):模块和包
开发语言·python
水饺编程28 分钟前
第4章,[标签 Win32] :SysMets3 程序讲解01
c语言·c++·windows·visual studio
Lenyiin29 分钟前
深度剖析 C 语言标准IO库:stdio 实现原理与实战指南
c语言·开发语言