【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;
}
相关推荐
aramae32 分钟前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
qq_2518364573 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理4 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手4 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
qq_199886874 小时前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda
+VX:Fegn08954 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
阿里嘎多学长5 小时前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
2401_839080545 小时前
C++常见八股
数据结构·c++·算法
qq_199886876 小时前
第6板块 第2节 CUDA运行时API与驱动API 核心笔记
c++·人工智能·gpu算力
syagain_zsx7 小时前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举