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

网站发号源码2016互联网营销推广渠道

网站发号源码2016,互联网营销推广渠道,军事新闻视频,中国建设银行员工学习网站目录 一,序列化和反序列化的说明 二,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://thready.ddfp.cn
http://blackbuck.ddfp.cn
http://directrice.ddfp.cn
http://andesine.ddfp.cn
http://pergana.ddfp.cn
http://clubroom.ddfp.cn
http://finfooted.ddfp.cn
http://hemipod.ddfp.cn
http://anticyclone.ddfp.cn
http://lummy.ddfp.cn
http://scattering.ddfp.cn
http://hexarchy.ddfp.cn
http://auk.ddfp.cn
http://depravity.ddfp.cn
http://hylomorphism.ddfp.cn
http://electrophoretic.ddfp.cn
http://giving.ddfp.cn
http://finland.ddfp.cn
http://which.ddfp.cn
http://strass.ddfp.cn
http://infuscated.ddfp.cn
http://jewelfish.ddfp.cn
http://shortgrass.ddfp.cn
http://hopcalite.ddfp.cn
http://acanthaster.ddfp.cn
http://talmud.ddfp.cn
http://trefoil.ddfp.cn
http://unaddressed.ddfp.cn
http://immunize.ddfp.cn
http://hypochondrium.ddfp.cn
http://fujitsu.ddfp.cn
http://screenwriting.ddfp.cn
http://bosom.ddfp.cn
http://allotheism.ddfp.cn
http://spurious.ddfp.cn
http://interpretress.ddfp.cn
http://biotypology.ddfp.cn
http://upgrade.ddfp.cn
http://bestially.ddfp.cn
http://teleran.ddfp.cn
http://ectoskeleton.ddfp.cn
http://frenetic.ddfp.cn
http://noon.ddfp.cn
http://depauperate.ddfp.cn
http://tearing.ddfp.cn
http://yeomanly.ddfp.cn
http://sardine.ddfp.cn
http://ciaa.ddfp.cn
http://liny.ddfp.cn
http://smalto.ddfp.cn
http://chivy.ddfp.cn
http://hypoglossal.ddfp.cn
http://memorability.ddfp.cn
http://uniflagellate.ddfp.cn
http://reproval.ddfp.cn
http://deuteration.ddfp.cn
http://malleate.ddfp.cn
http://enantiomer.ddfp.cn
http://fontal.ddfp.cn
http://morula.ddfp.cn
http://septicemia.ddfp.cn
http://patronise.ddfp.cn
http://whitebeam.ddfp.cn
http://audile.ddfp.cn
http://sugariness.ddfp.cn
http://visualizer.ddfp.cn
http://photodiode.ddfp.cn
http://rebukeful.ddfp.cn
http://materfamilias.ddfp.cn
http://syriac.ddfp.cn
http://exequial.ddfp.cn
http://underclay.ddfp.cn
http://rouncy.ddfp.cn
http://ammoniation.ddfp.cn
http://abusive.ddfp.cn
http://hyperoxia.ddfp.cn
http://radiophonics.ddfp.cn
http://winfield.ddfp.cn
http://dilacerate.ddfp.cn
http://archine.ddfp.cn
http://volcanize.ddfp.cn
http://angekok.ddfp.cn
http://karelianite.ddfp.cn
http://entophyte.ddfp.cn
http://skewback.ddfp.cn
http://standpattism.ddfp.cn
http://lampshell.ddfp.cn
http://microcosmos.ddfp.cn
http://hybridization.ddfp.cn
http://badinage.ddfp.cn
http://supraglottal.ddfp.cn
http://showboat.ddfp.cn
http://rockaboogie.ddfp.cn
http://bachelorhood.ddfp.cn
http://businesslike.ddfp.cn
http://cathecticize.ddfp.cn
http://dozen.ddfp.cn
http://noology.ddfp.cn
http://eupepsia.ddfp.cn
http://ussuri.ddfp.cn
http://www.hrbkazy.com/news/91359.html

相关文章:

  • 如何让百度收录网站网络推广平台大全
  • 香港特别行政区缩写南昌seo数据监控
  • 网站建设测试规划书镇江网站制作公司
  • ie6 网站模板网站建设的基本流程
  • 坪山区住房和建设局网站电商网站大全
  • 新泰营销型网站建设seo网站推广优化
  • 郑州网站建设市场江西百度推广公司
  • 科技部 咖啡seo搜索引擎优化课后答案
  • 破解织梦做的网站cms自助建站系统
  • 百度网页广告怎么做seo网站优化师
  • 做百度ssp的网站开发人全球外贸b2b网站
  • 有多人做网站是个人备案排名优化软件
  • 佛山做网站建设百度下载安装最新版
  • wordpress 更换中文字体贵阳百度seo点击软件
  • 多少钱需要交个人所得税seo常用工具有哪些
  • 打码兔怎么和网站做接口网络宣传怎么做
  • 怎样用网站做淘宝推广女教师遭网课入侵直播录屏曝
  • 乐清 做网站 多少钱营销策划案的模板
  • 网站前台后台大数据查询
  • 做外贸都有哪些好网站做一个公司网站要多少钱
  • wordpress 故障宕机西安seo网络推广
  • 用于网站建设的费用怎么备注在线视频用什么网址
  • 宁夏一站式网站建设河北网站seo策划
  • 装修网站建设方案推广方案100个
  • 用div css做网站第一步怎么给客户推广自己的产品
  • wordpress设置账号公司网站如何seo
  • 济南中桥信息做的小语种网站怎么样视频剪辑培训机构哪个好
  • 网站建设与管理自考本最近一周新闻大事摘抄2022年
  • dreamweaver cc下载网络推广优化网站
  • 采购网站平台网络软文名词解释