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

手机网站模版免费下载新闻稿代写

手机网站模版免费下载,新闻稿代写,网页页面怎么设计,腾讯云服务器用什么软件做网站目录 一,序列化和反序列化的说明 二,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://www.shuangfujiaoyu.com/news/25274.html

相关文章:

  • aspnet网站开发实例seo博客写作
  • 网站与网页设计今日头条新闻消息
  • 网站建设主要工作内容百度网站怎么提升排名
  • 建湖网站建设公司市场调研报告模板ppt
  • 微网站建设公司seo综合查询软件排名
  • 大气建站工作室网站源码批量查询指数
  • 河北网站建设报价友链交换网站
  • 如何做网站劫持推广一款app的营销方案
  • 关键词优化软件哪家好南京seo代理
  • 广州网站建设服务哪家好seo网站优化软件
  • 织梦网站模板源码php流量神器
  • 网站开发应聘信息微信群拉人的营销方法
  • 十大设计网站排名百度客户服务中心
  • 郑州网站开发培训班陕西seo
  • 制作app平台需要什么流程百度seo还有前景吗
  • 网站做语音识别武汉百度开户代理
  • 那个餐饮网站磁力蜘蛛种子搜索
  • 网上三维展馆网站是怎么做的廊坊网站
  • 做旅游网站的需求分析企业网络营销方案
  • 常州网站建设公司机构廊坊百度快照优化排名
  • 在什么网站上做兼职靠谱吗百度快速排名用是
  • 三网合一网站建设广东网站营销seo方案
  • 微信怎么做网站的动图深圳网络推广招聘
  • 怎么做网站优化的短视频运营
  • wordpress是免费吗长沙建站优化
  • 合肥房产网官网首页搜索引擎优化常用方法
  • kesioncms企业网站蓝色模板三亚百度推广开户
  • 猪八戒网可以做福彩网站吗深圳优化公司
  • 网站为什么会出现死链外贸推广方式
  • 济南网站改版网站关键词优化公司哪家好