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

女人做一级a网站免费互联网服务平台是什么

女人做一级a网站免费,互联网服务平台是什么,招聘网站官网,社旗网站设计1.JsonCpp第三方库 JSONCPP 是一个开源的 C 库,用于解析和生成 JSON(JavaScript Object Notation)数据。它提供了简单易用的接口,支持 JSON 的序列化和反序列化操作,适用于处理配置文件、网络通信数据等场景。 2.Jso…

1.JsonCpp第三方库

JSONCPP 是一个开源的 C++ 库,用于解析和生成 JSON(JavaScript Object Notation)数据。它提供了简单易用的接口,支持 JSON 的序列化和反序列化操作,适用于处理配置文件、网络通信数据等场景。

2.Json 数据格式

JSON 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。

比如:我们想表示一个 同学的信息

C 代码表示:

char *name = "xx";
int age = 18;
float score[3] = {88.5, 99, 58};

Json 表示:

{"姓名" : "xx","年龄" : 18,"成绩" : [88.5, 99, 58],"爱好" :{"书籍" : "西游记","运动" : "打篮球"}
}

包含以下基本类型:

  • 对象(Object):键值对集合,用 {} 包裹,如 {"name": "Alice", "age": 25}
  • 数组(Array):有序值列表,用 [] 包裹,如 [1, "text", true]
  • 值(Value):可以是字符串、数字、布尔值、null、对象或数组。

在 JSONCPP 中,所有 JSON 数据均通过 Json::Value 类表示。

3.JsonCpp 介绍

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(); // 判断类型bool isObject() const;bool isArray() const;bool isString() const;
};

生成器(序列化接口 – Writer)

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;
}// 使用如下:
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "  "; // 缩进两空格
std::string jsonStr = Json::writeString(builder, root);

解析器(反序列化接口–Reader)

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;
}
// 使用如下:
Json::CharReaderBuilder builder;
std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
JSONCPP_STRING errs;
bool success = reader->parse(jsonStr, jsonStr + strlen(jsonStr), &root, &errs);

小结,主要用的 三个类 如下:

  1. Json::Value类:中间数据存储类

    • 就需要先存储到 Json::Value 对象中如果要将数据对象进行序列化,如果要将数据传进行反序列化,就是解析后,将数据对象放入到J Json::Value 对象中
  2. Json::StreamWriter类:用于进行数据序列化

    • Json::StreamWriter::write() 序列化函数

    • Json::StreamWriterBuilder类: Json::StreamWriter 工厂类 – 用于生产 Json:.StreamWriter 对象

  3. Json::CharReader类:反序列化类

    • Json::CharReader::parse() 反序列化函数
    • Json::CharReaderBuilderJson::CharReader工厂类-用于生产 Json::.CharReader 对象

4.JsonCpp的使用

序列化(C++ 对象 -> JSON)

序列化是将 C++ 对象转换为 JSON 格式的字符串。我们可以通过 Json::Value 类来构建 JSON 对象,然后使用 Json::StreamWriterJson::FastWriter 来生成 JSON 字符串。

#include <iostream>
#include <json/json.h>int main() {// 创建一个 Json::Value 对象Json::Value root;// 添加一些键值对root["name"] = "Alice";root["age"] = 30;root["is_student"] = false;// 创建一个数组Json::Value languages;languages.append("C++");languages.append("Python");languages.append("JavaScript");root["languages"] = languages;// 使用 FastWriter 将 Json::Value 转换为 JSON 字符串Json::FastWriter fastWriter;std::string jsonString = fastWriter.write(root);// 输出 JSON 字符串std::cout << "Serialized JSON: " << jsonString << std::endl;return 0;
}

序列化结果

Serialized JSON: {"age":30,"is_student":false,"languages":["C++","Python","JavaScript"],"name":"Alice"}

反序列化(JSON -> C++ 对象

反序列化是将 JSON 字符串解析为 Json::Value 对象,以便在 C++ 中访问其内容。我们可以使用 Json::ReaderJson::CharReader 来解析 JSON 字符串。

#include <iostream>
#include <json/json.h>int main() {// 假设我们有一个 JSON 字符串std::string jsonString = "{\"name\":\"Alice\",\"age\":30,\"is_student\":false,\"languages\":[\"C++\",\"Python\",\"JavaScript\"]}";// 创建一个 Json::Value 对象Json::Value root;Json::CharReaderBuilder readerBuilder;std::string errs;// 使用 CharReader 解析 JSON 字符串std::istringstream iss(jsonString);if (!parseFromStream(readerBuilder, iss, &root, &errs)) {std::cerr << "Failed to parse JSON: " << errs << std::endl;return -1;}// 访问 JSON 数据std::string name = root["name"].asString();int age = root["age"].asInt();bool isStudent = root["is_student"].asBool();// 获取数组Json::Value languages = root["languages"];std::cout << "Deserialized JSON:" << std::endl;std::cout << "Name: " << name << std::endl;std::cout << "Age: " << age << std::endl;std::cout << "Is Student: " << (isStudent ? "Yes" : "No") << std::endl;std::cout << "Languages: ";for (unsigned int i = 0; i < languages.size(); ++i) {std::cout << languages[i].asString() << " ";}std::cout << std::endl;return 0;
}

反序列化结果:

Deserialized JSON:
Name: Alice
Age: 30
Is Student: No
Languages: C++ Python JavaScript 

5. 总结

  • 序列化 :通过 Json::Value 构建 JSON 对象,并使用 Json::FastWriterJson::StreamWriter 将其转换为 JSON 字符串。
  • 反序列化 :通过 Json::ReaderJson::CharReader 将 JSON 字符串解析为 Json::Value 对象,然后可以通过 asString()asInt() 等方法访问数据。

JsonCpp 是一个非常方便的库,适合在 C++ 项目中处理 JSON 数据。


文章转载自:

http://I4dk2FcX.wfwqr.cn
http://el9Q5Paw.wfwqr.cn
http://3a965Qd8.wfwqr.cn
http://MJoFput2.wfwqr.cn
http://al43ffqO.wfwqr.cn
http://BwJmLDHI.wfwqr.cn
http://ybB7zGtq.wfwqr.cn
http://d70R695W.wfwqr.cn
http://HorQ7Qm4.wfwqr.cn
http://68u3umSz.wfwqr.cn
http://DafMh3hN.wfwqr.cn
http://dvcErdvf.wfwqr.cn
http://yHqp8F4C.wfwqr.cn
http://YdjI2jUk.wfwqr.cn
http://5fptelBY.wfwqr.cn
http://3Y4T820P.wfwqr.cn
http://Gv33IP1w.wfwqr.cn
http://4TvvUGxC.wfwqr.cn
http://gcDJDMYn.wfwqr.cn
http://aRC6dH1A.wfwqr.cn
http://Dr7dHgor.wfwqr.cn
http://GU8TCMHY.wfwqr.cn
http://5fu2Z0f3.wfwqr.cn
http://Y5l8e2U0.wfwqr.cn
http://wLQtPj2P.wfwqr.cn
http://ROyDDWiD.wfwqr.cn
http://lvirYCry.wfwqr.cn
http://C6xGnqLa.wfwqr.cn
http://fgFZMyhO.wfwqr.cn
http://NeyCocg5.wfwqr.cn
http://www.dtcms.com/wzjs/623447.html

相关文章:

  • 网站建设配图seo排名需要多少钱
  • 北京建网站价格优帮云龙华建网站公司
  • 个人制作网站多少钱wordpress好用的会员
  • 期末成绩怎么做网站岳阳网站建设企业
  • 手机评测哪个网站做的好点中国建设银行绑定网站
  • 域名注册过程青岛seo整站优化
  • 万网怎么创建网站最新网站技术
  • 怎么让百度收录自己的网站如何建立一个网站放视频
  • 临清聊城网站优化wordpress移动端底部广告
  • 国内公司网站需要备案wordpress如何导出主题
  • 做全世界的生意的网站简约大气的网站
  • 企业网站开发的感想泉州网站搭建
  • 鹿寨县建设局网站网站建设落后发言
  • 经营性 网站备案网站建设怎么设置权限
  • 水利枢纽门户网站建设方案cnzz网站代做
  • 网站维护主要工作内容宁波网站建设优化企业
  • 域名注册官方网站谷歌镜像网站怎么做
  • 企业网站建设需要多少钱家具设计作品集
  • 咸阳市网站建设公司备案中网站打不开
  • 门户网站开发费需入无形资产小程序免费制作平台官网
  • 如何创建百度网站台州网站设计公司网站
  • 番禺人才招聘网官网在线seo推广软件
  • 建设网站模块需要哪些手机商城设计
  • 织梦网站头部到底部去了微信有哪些不正经的公众号
  • 四核网站建设文山网站建设兼职
  • 医院网站制作做视频免费模板下载网站
  • wordpress目录分站wordpress模板应用
  • 网站跟app的区别是什么意思厂房网行业门户网站建设策划方案ppt
  • 支付网站备案大连网站外包
  • 购物网站怎么做优化淘宝客网站做seo有用吗