【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;
}
相关推荐
q567315233 分钟前
使用reqwest+select实现简单网页爬虫
开发语言·爬虫·golang·kotlin
郝学胜-神的一滴12 分钟前
C++中的`auto`与`std::any`:功能、区别与选择建议
开发语言·c++·程序人生·算法
Rain_is_bad1 小时前
初识c语言————排序方法
c语言·开发语言·数据结构
一枚小小程序员哈1 小时前
基于python/django框架的车型识别系统
开发语言·python
全栈开发圈2 小时前
干货分享|如何从0到1掌握R语言数据分析
开发语言·数据分析·r语言
极客BIM工作室2 小时前
老生常谈智能指针:《More Effective C++》的条款28
开发语言·c++
hllqkbb2 小时前
Ubuntu22.04轻松安装Qt与OpenCV库
开发语言·qt·opencv
嘟爸教编程3 小时前
C++少儿编程(二十二)—条件结构
开发语言·c++
军训猫猫头3 小时前
11.用反射为静态类的属性赋值 C#例子 WPF例子
开发语言·c#
傻啦嘿哟3 小时前
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
开发语言·python