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

Json工具类的介绍

主要是对数据进行序列化和反序列化,Json工具类没有成员变量,只设计了成员函数.
这里用到了第三方库Jsoncpp

成员函数

Serialize(序列化)

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(反序列化)

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. lesson3服务Json工具设计实现

    2024-06-15 05:30:03       8 阅读
  2. 基于JacksonJson工具

    2024-06-15 05:30:03       27 阅读
  3. nettyTCP服务客户实现

    2024-06-15 05:30:03       25 阅读
  4. lesson03:对象(中)续

    2024-06-15 05:30:03       12 阅读
  5. lesson8】云备份服务完整版代码

    2024-06-15 05:30:03       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 05:30:03       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 05:30:03       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 05:30:03       10 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 05:30:03       13 阅读

热门阅读

  1. 力扣475.供暖器

    2024-06-15 05:30:03       5 阅读
  2. 图片based64编码解码python代码

    2024-06-15 05:30:03       5 阅读
  3. ray框架训练阶段和 Serve 阶段对比

    2024-06-15 05:30:03       9 阅读