当前位置: 首页 > wzjs >正文

ppt模板免费下载的网站网站建设哪些字体没有版权

ppt模板免费下载的网站,网站建设哪些字体没有版权,推广的几种方式,网站有备案 去掉备案引言 Jsoncpp 库主要是用于实现 Json 格式数据的序列化和反序列化,它实现了将多个数据对象组织成 为Json格式字符串,以及将 Json 格式字符串解析得到多个数据对象的功能,独立于开发语言。 Json数据对象 Json数据对象类的表示: …

引言

Jsoncpp 库主要是用于实现 Json 格式数据的序列化和反序列化,它实现了将多个数据对象组织成 为Json格式字符串,以及将 Json 格式字符串解析得到多个数据对象的功能,独立于开发语言。

Json数据对象

Json数据对象类的表示:

class Json::Value{Value &operator=(const Value &other); //Value重载了[]和=,因此所有的赋值和获取数据都可以通过 Value& operator[](const std::string& key);//简单的⽅式完成 val["name"] = "xx";Value& operator[](const char* key);Value removeMember(const char* key);//移除元素 const Value& operator[](ArrayIndex index) const; //val["score"][0]Value& append(const Value& value);//添加数组元素val["score"].append(88);  ArrayIndex size() const;//获取数组元素个数 val["score"].size(); std::string asString() const;//转string string name = val["name"].asString();const char* asCString() const;//转char* char *name = val["name"].asCString();Int asInt() const;//转int int age = val["age"].asInt(); float asFloat() const;//转float float weight = val["weight"].asFloat(); bool asBool() const;//转 bool bool ok = val["ok"].asBool(); 
};

上面列举了Json数据对象Json::Value的一些成员方法, Json::Value是用来存储数据的,可以把它理解为一个容器。序列化方法和反序列化方法就可以将传入的Json::Value数据对象进行序列化和反序列化操作。

Json基本语法规则

Json通常采用KeyValue的格式。例如:“姓名”:“小颖”,中间用冒号:隔开。其中,键名必须为字符串且必须用双引号包裹。

{ "key": "value" }  // ✅ 正确
{ key: "value" }    // ❌ 错误

Json中还有另一种数据结构——数组。用中括号[ ]包裹起来,里面的值的类型可以不同。

 ["苹果", "香蕉", 123, true]

序列化接口

class JSON_API StreamWriter {virtual int write(Value const& root, std::ostream* sout) = 0;//......
}
class JSON_API StreamWriterBuilder : public StreamWriter::Factory {virtual StreamWriter* newStreamWriter() const;//......
}

可以看得出来,这里用到了一种设计模式——工厂模式。 也就是说使用StreamWriterBuilder 来生产StreamWriter对象。write就是序列化接口,第一个参数为存储数据的Value对象,第二个参数为输出流对象的指针。StreamWriter用于将JSON数据写入到输出流中,StreamWriterBuilder则是用来配置和创建StreamWriter实例的。所谓配置,就是配置Json输出的格式,比如缩进、换行这些都是。下面用代码演示如何对数据进行序列化。

反序列化接口

class JSON_API CharReader {virtual bool parse(char const* beginDoc, char const* endDoc, Value* root, std::string* errs) = 0;
}
class JSON_API CharReaderBuilder : public CharReader::Factory {virtual CharReader* newCharReader() const;
}

和序列化一样,这里同样用到了工厂设计模式。CharReaderBuilder 负责配置解析规则,然后由CharReader来进行解析。CharReader不能直接创建对象,因为它里面有个纯虚函数,所以它是个抽象类。创建对象的职责由CharReaderBuilder来承担。函数parse就是用来完成反序列化的。

序列化和反序列化代码演示

#include <iostream>
#include <memory>
#include <sstream>
#include <jsoncpp/json/json.h>//序列化
bool Serialize(const Json::Value val, std::string &body)
{std::stringstream ss;//构建StreamWriter对象Json::StreamWriterBuilder swb;std::unique_ptr<Json::StreamWriter> sw(swb.newStreamWriter());int ret = sw->write(val, &ss);//成功返回0,失败返回-1if(ret != 0){std::cout << "serialize faild\n";return false;}body = ss.str();return true;
}//反序列化
bool unserialize(const std::string &body, Json::Value&val)
{Json::CharReaderBuilder crb;std::unique_ptr<Json::CharReader> cr(crb.newCharReader());std::string errs;bool ret = cr->parse(body.c_str(), body.c_str() + body.size(), &val, &errs);if(ret == false){std::cout << "unserialize faild : " << errs << std::endl;return false;}return true;
}int main()
{Json::Value stu;stu["姓名"] = "小颖";stu["年龄"] = 19;//构建数组,不能直接stu["爱好"] = ["打羽毛球", "吃吃吃", "散步"];stu["爱好"].append("打羽毛球");stu["爱好"].append("吃吃吃");stu["爱好"].append("散步");std::string body;Serialize(stu, body);std::cout << body << std::endl;std::string str = R"({"姓名":"小北", "年龄":20})";//C++11的一种新语法,定义一个字符串Json::Value student;bool ret = unserialize(str, student);//将字符串反序列化if(ret == false)return -1;std::cout << "姓名:" << student["姓名"].asString() << std::endl;std::cout << "年龄:" << student["年龄"].asInt() << std::endl;return 0;
}//运行结果
{"\u59d3\u540d" : "\u5c0f\u9896","\u5e74\u9f84" : 19,"\u7231\u597d" : ["\u6253\u7fbd\u6bdb\u7403","\u5403\u5403\u5403","\u6563\u6b65"]
}
姓名:小北
年龄:20


文章转载自:

http://UiHT8ZrL.tktyh.cn
http://bPvD62vz.tktyh.cn
http://ALLVOfkA.tktyh.cn
http://2B4smMGc.tktyh.cn
http://xG8Kqv96.tktyh.cn
http://50HhVRKy.tktyh.cn
http://oxu6NYEG.tktyh.cn
http://fWh7kFGg.tktyh.cn
http://hBA0b0pg.tktyh.cn
http://46b3iPji.tktyh.cn
http://TcU8a8Jp.tktyh.cn
http://WbCRlvAR.tktyh.cn
http://JgCw8zN5.tktyh.cn
http://6Wr1FkWh.tktyh.cn
http://xiZErfph.tktyh.cn
http://fMQc4Wii.tktyh.cn
http://6Gtfk2Pb.tktyh.cn
http://yGcnpWLb.tktyh.cn
http://9n2dutzm.tktyh.cn
http://gVGLxdLk.tktyh.cn
http://4n8cofOF.tktyh.cn
http://ZSq0nDLg.tktyh.cn
http://ky0Fk98A.tktyh.cn
http://iDUoWYT1.tktyh.cn
http://KwPxjn0Z.tktyh.cn
http://UC4LwAhL.tktyh.cn
http://JvwAHL55.tktyh.cn
http://s6B41qXK.tktyh.cn
http://nYeWbt7J.tktyh.cn
http://PYZClHdc.tktyh.cn
http://www.dtcms.com/wzjs/689348.html

相关文章:

  • 网站地图设计h5动画网站
  • 网站设置关键字wordpress参考文件夹
  • 北京 外贸网站建设哔哩哔哩官方网站首页
  • 江象网站建设学校网站建设管理办法
  • 网站ftp怎么登陆app怎样下载安装
  • 网站开发swf素材有哪些网站可以做视频
  • 电脑自助建站库尔勒业之峰装饰公司怎么样
  • 简约网站程序市场营销目标怎么写
  • 请简述网站建设流程图seo技术培训班
  • 网页制作网站平台郑州威盟网站建设公司怎么样
  • 电力建设网站进不去什么网站可以自学ps做贵宾卡
  • wordpress怎么社交分享插件seo外链优化
  • 济南网站建设网站建设合工大网站建设试卷
  • 个人网站开发计划书南城区做网站
  • 医疗机构网站备案书城网站开发
  • 外国设计网站wordpress免登陆发布模块
  • 有创意的个人网站推广产品最好的方式
  • 网站栏目页关键词如何做百度seo如何快速排名
  • 著名的个人网站我的世界做皮肤网站
  • 什么星网站做调查问卷的今天的最新消息新闻
  • 网站建设设计公网络设计实验报告
  • 摄影网站排行榜前十名下载了国外app怎么连不上网
  • 利州区住房和城乡建设部网站手表东莞网站建设技术支持
  • 品牌网站建设搭建八大建筑央企排名
  • 保定做网站设计西安网站制作多少钱
  • 沧浪seo网站优化软件南通制作网站公司
  • 网站错误列表河南网站建设华企祥云
  • 网站系统目前运行稳定怎么优化电脑系统
  • 网站建设知名青少儿编程
  • 百度收录较好的网站沈阳公司