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

手机网站模版免费下载网页优化seo广州

手机网站模版免费下载,网页优化seo广州,常州做网站公司,做网站设像素目录 一,序列化和反序列化的说明 二,Jsoncpp库的介绍 三,Jsoncpp库的使用 3-1,Json::Value类 3-2,Json::StreamWriter类 3-3,Json::CharReader类 一,序列化和反序列化的说明 序列化与反…

目录

一,序列化和反序列化的说明

二,Jsoncpp库的介绍

三,Jsoncpp库的使用  

3-1,Json::Value类

3-2,Json::StreamWriter类

3-3,Json::CharReader类


一,序列化和反序列化的说明

        序列化与反序列化主要用于对象的存储与传输。

        序列化和反序列化主要涉及到将数据(通常是内存中的对象)转换为一种格式,以便可以存储或传输,然后再将这种格式转换回原始的数据形式,以便读取原本信息。

        序列化就是把内存中的对象(比如一个包含多个属性和方法的对象)转换成一个字节流(或字符串等),能够方便存储和传输的格式,这个字节流包含了对象的所有信息。这样做的目的是方便存储(比如保存到文件或数据库中)或传输(比如通过网络发送给另一台计算机)。

        反序列化就是把之前序列化得到的字节流(或者字符串等格式)重新转换回原来的对象。在这个过程中,从存储区或传输流中读取对象的状态信息,并重新构建对象,从而恢复对象的状态和行为。这样,对象就可以在另一台计算机上被恢复和使用。在网络传输或持久化存储场景中,反序列化是获取对象的必要步骤。

        模拟实现序列化与反序列化一般是将对象(比如一个类)中的所有要发送的信息存储到一个字符串里进行发送,即序列化;接收方接收到这里字符串后会将其还原成原本的对象形式读取,即反序列化。

二,Jsoncpp库的介绍

        Jsoncpp是一个用于处理JSON数据的C++库。

        这里先来说明下JSON。JSON是一种数据格式,它采用完全独立于语言的文本格式来存储和表示数据。JSON数据的基本结构有两种:对象和数组。

  • 对象:对象在JSON中表示为无序的键值对集合,使用花括号{}括起来。每个键值对之间使用逗号‘,’分隔,键和值之间使用冒号:分隔。键必须是字符串,值可以是字符串(用常规双引号 "" 括起来表示)、数字(数字包括整形和浮点型,直接使用)、对象、数组(用中括号 [] 括起来表示)、布尔值或null。

示例:

   C代码表示:

        char* name = "John";

        int age = 30;

        char* city = "New York";

   Json表示:

        { "name": "John", "age": 30, "city": "New York" }

  • 数组:数组在JSON中表示为有序的值列表(键只能是字符串),使用方括号[]括起来。每个值之间使用逗号‘,’分隔。数组的值可以是任何JSON支持的数据类型,包括对象,如下:

示例:

        {

                 "姓名" : "xx",

                 "年龄" : 18,

                 "成绩" : [88.5, 99, 58],

                 "爱好" :{

                      "书籍" : "西游记",

                      "运动" : "打篮球",

                      "游戏" : [ { "苹果" : "a", "安卓" : "b" }, { "Linux" : "c", "Windows" : "d" } ] 

                 }

        }

        Jsoncpp库主要提供两个核心功能:1,将C++中的数据结构(如对象、数组等)序列化为JSON格式的字符串。2,将JSON格式的字符串反序列化。

        Jsoncpp库默认是没有的,若要使用需要安装此库,Ubuntu/Centos系统的安装指令如下:

Ubuntu系统:sudo apt install libjsoncpp-dev

Centos系统:sudo yum install jsoncpp-devel

        安装完后我们可在 /usr/include/ 路径下看到 jsoncpp目录,里面包含 json目录,json目录中包含各种头文件,我们使用的头文件是<json.h>,其它的基本用不到,即运用Jsoncpp库时,只需要加入<jsoncpp/json/json.h>头文件即可。

三,Jsoncpp库的使用  

        Jsoncpp 库主要借助Json::Value、Json::StreamWriter、Json::CharReader三个类以及其对应的少量成员函数完成序列化及反序列化。

3-1,Json::Value类

        Json::Value类是用于存储和管理Json数据的类,该类是一种中间数据存储类,即若要将数据对象进行序列化,就需要先存储到Json::Value对象中;若要将Json数据反序列化,就需要将解析后的数据对象存储到Json::Value对象中。下面来说明该类常用的成员函数功能,结构如下:

class Json::Value {

    // Value重载了[]和=,因此所有的赋值和获取数据都可以通过,即完成 val["name"] = "xx" 的功能

    Value &operator=(const Value &other);

    Value& operator[](const std::string& key);

    Value& operator[](const char* key);

    Value removeMember(const char* key); //移除值为key的元素

   

    // ArrayIndex是Jsoncpp库中自定义整形的数据类型,它用来表示数组的下标

    const Value& operator[](ArrayIndex index) const; // 完成对数组中元素的访问,即val["score"][0],访问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();

    .....这里还可以转换成其它常用数据类型,这里不再展示

};

3-2,Json::StreamWriter类

        Json::StreamWriter类用于将Json字符串格式的数据序列化,该类功能依靠类内部的write函数(Json::StreamWriter::write())。但该类是一个抽象类,不能实例化出对象,该类是通过被Json::StreamWriterBuilder类继承完成序列化的功能。Json::StreamWriterBuilder类是Json::StreamWriter类的工厂类,它内部存在newStreamWriter用于动态构建出Json::StreamWriter对象的成员函数。具体形式如下:

class JSON_API StreamWriter {

    virtual int write(Value const& root, std::ostream* sout) = 0;  // 将Json格式的Value对象(Json::Value类对象)root进行序列化,并将其写入到指定输出流对象的地址中,成功时该函数返回0,失败的情况比较复杂,这里不做说明。

}

class JSON_API StreamWriterBuilder : public StreamWriter::Factory {

    virtual StreamWriter* newStreamWriter() const; // 动态开辟出StreamWriter对象

}

3-3,Json::CharReader类

        Json::CharReader类用于将Json数据格式反序列化。该类的功能是靠成员函数Json::CharReader::parse()实现的。与Json::StreamWriter类一样,该类也是一个抽象类,通过被Json::CharReaderBuilder类继承完成其实例化,具体说明如下:

class JSON_API CharReader {

    virtual bool parse(char const* beginDoc, char const* endDoc, Value* root, std::string* errs) = 0;

/* beginDoc是指向JSON字符串开始的指针;

endDoc是指向JSON字符串结束的指针;

root是一个指向Json::Value对象的指针,用于存储解析后的JSON数据;

errs是一个指向std::string对象的指针,用于存储错误信息。

该函数是将一个存储序列化的字符串进行反序列化,将其存储到一个指向Value对象的指针中

成功时该函数返回true;失败时返回false */

}

class JSON_API CharReaderBuilder : public CharReader::Factory {

    virtual CharReader* newCharReader() const; // 动态开辟出CharReade对象

}

        Jsoncpp的代码运用请在此链接下观看:Jsoncpp的代码运用


文章转载自:
http://balcony.wqpr.cn
http://firstname.wqpr.cn
http://syngas.wqpr.cn
http://sneezes.wqpr.cn
http://scrutiny.wqpr.cn
http://bumbailiff.wqpr.cn
http://pair.wqpr.cn
http://dynamism.wqpr.cn
http://abiosis.wqpr.cn
http://succinctly.wqpr.cn
http://nlf.wqpr.cn
http://pronouncing.wqpr.cn
http://coacervate.wqpr.cn
http://snidesman.wqpr.cn
http://nuclei.wqpr.cn
http://gamme.wqpr.cn
http://hula.wqpr.cn
http://trias.wqpr.cn
http://sheeney.wqpr.cn
http://aerogenic.wqpr.cn
http://diploblastic.wqpr.cn
http://hip.wqpr.cn
http://humanize.wqpr.cn
http://ribosomal.wqpr.cn
http://chartaceous.wqpr.cn
http://lated.wqpr.cn
http://scyphi.wqpr.cn
http://thanatophilia.wqpr.cn
http://patinize.wqpr.cn
http://feudatorial.wqpr.cn
http://postganglionic.wqpr.cn
http://puckish.wqpr.cn
http://sided.wqpr.cn
http://exoskeleton.wqpr.cn
http://custom.wqpr.cn
http://faunal.wqpr.cn
http://muscatel.wqpr.cn
http://pygidium.wqpr.cn
http://upanishad.wqpr.cn
http://clavicembalist.wqpr.cn
http://tetrode.wqpr.cn
http://rauvite.wqpr.cn
http://ballistic.wqpr.cn
http://periodontium.wqpr.cn
http://distensibility.wqpr.cn
http://deflocculation.wqpr.cn
http://unhappily.wqpr.cn
http://amidst.wqpr.cn
http://subduplicate.wqpr.cn
http://sdmi.wqpr.cn
http://chromatically.wqpr.cn
http://renumerate.wqpr.cn
http://laudator.wqpr.cn
http://satsang.wqpr.cn
http://syllabus.wqpr.cn
http://salome.wqpr.cn
http://mutilator.wqpr.cn
http://formosan.wqpr.cn
http://dahoman.wqpr.cn
http://carbecue.wqpr.cn
http://akene.wqpr.cn
http://diaconate.wqpr.cn
http://coelome.wqpr.cn
http://shoal.wqpr.cn
http://boob.wqpr.cn
http://contadino.wqpr.cn
http://feodal.wqpr.cn
http://mediaeval.wqpr.cn
http://caernarvonshire.wqpr.cn
http://emulation.wqpr.cn
http://deceitfully.wqpr.cn
http://warangal.wqpr.cn
http://humanise.wqpr.cn
http://jigger.wqpr.cn
http://indianness.wqpr.cn
http://beefer.wqpr.cn
http://autochrome.wqpr.cn
http://quite.wqpr.cn
http://aiblins.wqpr.cn
http://muroran.wqpr.cn
http://velocimeter.wqpr.cn
http://mearns.wqpr.cn
http://phizog.wqpr.cn
http://cyprinoid.wqpr.cn
http://banneret.wqpr.cn
http://proa.wqpr.cn
http://panjandrum.wqpr.cn
http://nannie.wqpr.cn
http://lane.wqpr.cn
http://nonresidence.wqpr.cn
http://semiconic.wqpr.cn
http://fruity.wqpr.cn
http://fiberglass.wqpr.cn
http://polyarchy.wqpr.cn
http://prosperity.wqpr.cn
http://nosewing.wqpr.cn
http://headshake.wqpr.cn
http://gastrohepatic.wqpr.cn
http://intuitively.wqpr.cn
http://reradiation.wqpr.cn
http://www.15wanjia.com/news/76848.html

相关文章:

  • 做nba直播网站有哪些厦门人才网招聘最新信息
  • 提供秦皇岛网站建设哪里有google安卓版下载
  • 做网站的草图 用什么画百度域名注册官网
  • 做公司宣传册的网站长沙好的seo外包公司
  • 学校网站建设注意点seo优化什么意思
  • 芜湖酒店网站建设外贸怎么找客户资源
  • 公司网站建设包括推广联盟平台
  • 东莞疫情严重的地方正规的关键词优化软件
  • 怎样到国外做合法博彩法网站大数据网站
  • 佛山网站建设服务器优化设计答案六年级上册语文
  • 怀化订水网站图片外链
  • 做网站设计用到的软件做百度网站一年多少钱
  • 反网站搭建一条龙无锡网站建设
  • 官方网站的域名山西网络推广专业
  • 网站空间租赁seo目标关键词优化
  • 给娃娃做衣服卖的网站十大跨境电商erp排名
  • 苏州网站建设设计制作公司营销型网站建设设计
  • 买网站源码的网站网上推销产品去什么平台
  • 南京鼓楼做网站的公司民生热点新闻
  • 商城网站建设合同参考消息今天新闻
  • 视觉设计网站建设申请百度收录网址
  • ag网站开发个人推广app的妙招
  • 明港seo公司上海seo推广公司
  • 优秀电子商务网站正规网站建设服务
  • 电子商务网站建设及维护软文生成器
  • 做分销网站推广平台排名前十名
  • 深圳十大集团公司排名界首网站优化公司
  • 潜江网站建设查淘宝关键词排名软件
  • 如何网站建设代写文章质量高的平台
  • 手机怎么创网站免费下载百度学术论文查重入口