【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;
}
相关推荐
疯狂SQL1 小时前
手写高性能在线 JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
typescript·json·next.js·web worker·前端性能优化·esbuild·源码实战
clint4564 天前
C++进阶(1)——前景提要
c++
夜悊4 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴4 天前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0015 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
LDR0065 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术5 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园5 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob5 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享5 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm