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

建设网站的一般步骤国家认可的教育培训机构

建设网站的一般步骤,国家认可的教育培训机构,公司网站流程,婚纱摄影服务第三部分:JsonCpp 处理 JSON(现代 C++ 方案) 📢 快速掌握 JSON!文章 + 视频双管齐下 🚀 如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 JsonCpp 课程视频!🎬 视频里会用更直观的方式讲解 JsonCpp 的核心概念、实战技巧,并配有动手演…

第三部分:JsonCpp 处理 JSON(现代 C++ 方案)

📢 快速掌握 JSON!文章 + 视频双管齐下 🚀

如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 JsonCpp 课程视频!🎬 视频里会用更直观的方式讲解 JsonCpp 的核心概念、实战技巧,并配有动手演示,让你更高效地掌握 JSON 的处理方法!

当然,如果你喜欢深度阅读,这篇文章会帮助你系统地理解 JsonCpp,从基础到进阶!无论你选择哪种方式,最终目标都是让你成为 JsonCpp 处理的高手!💪

🎥 点击这里观看视频 👉 视频链接

一:JsonCpp 库概述与环境配置

1.1 JsonCpp 简介(特点、适用场景)

📌 JSONCPP 是什么?

  • JSONCPP 是一个 轻量级、功能强大 的 C++ JSON 解析库。
  • 它提供了 读取、修改、序列化、反序列化 JSON 的功能。
  • 适用于 嵌入式系统、网络编程、配置管理、日志处理 等场景。

📌 JSONCPP 的特点

易用:提供直观的 Json::Value 结构,操作 JSON 类似于操作 std::map
功能全面:支持 解析、创建、修改、格式化输出
性能优越:支持 高效的流式解析,适合处理大规模 JSON 数据

1.2 下载和安装 JsonCpp(CMake / vcpkg)

安装 JSONCPP

💡 方法 1:在windows中使用 vcpkg 安装

# powershellvcpkg install jsoncpp

💡 方法 2:在linux/macOS中使用系统包管理器

# Ubuntu/Debian
sudo apt install libjsoncpp-dev
# CentOS
sudo yum install jsoncpp         
# macOS
brew install jsoncpp

💡 方法 3:使用源码编译

git clone https://github.com/open-source-parsers/jsoncpp.git
cd jsoncpp
mkdir build && cd build
cmake .. && make
sudo make install

CMake 集成

# 安装了jsoncpp库的情况
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 查找 jsoncpp 库
find_package(jsoncpp REQUIRED)# 包含头文件目录
include_directories(${JSONCPP_INCLUDE_DIRS})# 链接 jsoncpp 库
target_link_libraries(MyExecutable ${JSONCPP_LIBRARIES})
1.3 在 C++ 项目中集成 JsonCpp

另一种方式,会在目录下生成一个dist文件夹,在文件夹下包括jsoncpp的头文件和源文件;直接拷贝源文件到项目中即可。

python3 amalgamate.py

二:使用 JsonCpp 解析 JSON

2.1 加载JSON字符串
  • 解析 JSON 字符串:

    JsonCpp 提供了一个 Json::CharReader 用于解析 JSON 字符串,返回一个 Json::Value 对象。该对象是一个可以操作的 JSON 数据结构。

  • 解析 JSON 字符串并输出

    以下代码展示了如何解析一个 JSON 字符串,并将其内容打印出来(包括格式化输出)。

    示例代码:
    #include <iostream>
    #include <json/json.h>
    #include <fstream>int main() {// 示例 JSON 字符串std::string jsonString = R"({"name": "John","age": 30,"city": "New York","isEmployed": true,"skills": ["C++", "Python", "Java"]})";// 创建 Json::CharReaderBuilder,用于解析 JSON 字符串Json::CharReaderBuilder readerBuilder;Json::Value root;std::string errs;// 解析 JSON 字符串std::istringstream iss(jsonString);if (Json::parseFromStream(readerBuilder, iss, &root, &errs)) {// 解析成功,输出 JSON 内容std::cout << "Parsed JSON: " << std::endl;// 创建 StreamWriterBuilder,用于输出格式化的 JSON 字符串Json::StreamWriterBuilder writerBuilder;writerBuilder["indentation"] = "    "; // 设置缩进为4个空格std::string jsonStr = Json::writeString(writerBuilder, root);// 输出格式化后的 JSON 字符串std::cout << jsonStr << std::endl;} else {// 解析失败,输出错误信息std::cout << "Failed to parse the JSON string." << std::endl;std::cout << "Error: " << errs << std::endl;}return 0;
    }
    
    解释:
    1. JSON 字符串jsonString 变量保存了一个 JSON 格式的字符串。
      • R"(...)" 是 C++11 引入的原始字符串字面量,用于避免转义字符。
      • JSON 字符串中包括了 nameagecityisEmployedskills 等字段。
    2. Json::CharReaderBuilder:用于配置 JSON 解析器。Json::parseFromStream 方法从输入流中解析 JSON 字符串,并将解析后的内容存储到 root 对象中。
    3. 解析 JSON 字符串Json::parseFromStream 方法解析输入流中的 JSON 字符串,返回 true 表示解析成功,false 表示解析失败。
    4. 输出 JSON 数据
      • 使用 Json::StreamWriterBuilder 构建输出流,以便输出格式化的 JSON 字符串。
      • 设置 indentation" "(四个空格),使输出具有缩进和易于阅读的格式。
    5. 输出结果
      • 如果解析成功,将输出格式化后的 JSON 字符串。
      • 如果解析失败,输出错误信息。
    示例输出:
    Parsed JSON:
    {"age": 30,"city": "New York","isEmployed": true,"name": "John","skills": ["C++","Python","Java"]
    }
    
    总结:
    • Json::CharReaderBuilder 用于配置 JSON 解析器,并从输入流解析 JSON 字符串。
    • Json::StreamWriterBuilder 用于控制输出 JSON 字符串的格式(如缩进、空格数等)。
    • Json::Value 存储解析后的 JSON 数据,允许进行读取、修改、输出等操作。
2.2 解析JSON数组

JsonCpp 支持解析 JSON 数组,数组元素可以是任意类型的数据(如字符串、数字、对象、嵌套数组等)。

示例:

#include <iostream>
#include <json/json.h>int main() {std::string jsonString = R"([{"name":"John", "age":30}, {"name":"Alice", "age":25}])";Json::CharReaderBuilder readerBuilder;Json::Value root;std::istringstream s(jsonString);std::string errs;if (Json::parseFromStream(readerBuilder, s, &root, &errs)) {for (const auto& item : root) {std::cout << "Name: " << item["name"].asString() << ", Age: " &l

文章转载自:

http://hclXhCCy.hqrkq.cn
http://3rDJSNYD.hqrkq.cn
http://1CQhZUod.hqrkq.cn
http://FpMdrDaT.hqrkq.cn
http://91n0YFuj.hqrkq.cn
http://dAbBW7xx.hqrkq.cn
http://fFmT2IzA.hqrkq.cn
http://pwmxDELC.hqrkq.cn
http://4cJdJjKU.hqrkq.cn
http://LKMt72Cb.hqrkq.cn
http://k7MCkRIF.hqrkq.cn
http://gWQbqTfC.hqrkq.cn
http://DEJjdRR3.hqrkq.cn
http://E1giI6VQ.hqrkq.cn
http://00j3S53P.hqrkq.cn
http://PFecl2oG.hqrkq.cn
http://Vn0Y0jKI.hqrkq.cn
http://XlmnES37.hqrkq.cn
http://M6Nj8YJp.hqrkq.cn
http://yd5ExgYC.hqrkq.cn
http://ryilifo9.hqrkq.cn
http://4MkUpf1q.hqrkq.cn
http://CHmkT7ZT.hqrkq.cn
http://U1dOK9qL.hqrkq.cn
http://qiqq67A7.hqrkq.cn
http://6ovVSB9D.hqrkq.cn
http://K7KPAhNW.hqrkq.cn
http://ANbBxaWp.hqrkq.cn
http://oQj50n0Y.hqrkq.cn
http://Htapklct.hqrkq.cn
http://www.dtcms.com/wzjs/741396.html

相关文章:

  • 网站页面自适应屏幕电子商务+网站建设
  • 网站设计 职业网站标题怎么改
  • seo整站优化更能准确获得客户旅游品牌推广方案
  • 太原网站专业制作凡客v十商城
  • 网站换服务器 备案吗长春作网站的那家
  • 电子商务网站设计与维护论文做百度推广首先要做网站吗
  • 成都网站设计最加科技重庆保姆网
  • 淘宝客网站api天河网站建设技术
  • wordpress卡密网站源码全军采购信息招标网
  • 中国建设行业峰会网站找谁做百度关键词排名
  • 建筑网站建设wordpress镜像下载
  • 自己做网站的优势做响应式网站设计师需要做什么
  • 网站广告位图片更换没反应天河定制型网站建设
  • 职业生涯规划网站开发背景网站设计公司模板
  • 哪个网站做ic好wordpress for
  • 网站对接微信接口如何做php游戏介绍网站
  • 网站建设可以一次性进损益吗遵义建设厅官方网站 元丰
  • 浦口区网站建设质量推荐三门峡城乡建设局网站
  • 搭建网站要什么配置交友平台网站建设
  • 深圳网站开发建设服务公司绿色学校网站模板
  • 查邮箱注册的网站即墨网站建设
  • 网站建设行业市场分析中国核工业第五建设有限公司是国企吗
  • 做网站什么最重要赣州一店面爆炸4死
  • 耐克网站建设策划方案网站有pc站和手机站
  • wordpress博客下载器seo怎么去做
  • 专业开发网站报价单网站策划用培训吗
  • 做ui的网站有哪些seo工程师是什么职业
  • 网站开发有什么好的介绍网站实现中英文
  • 网站工程师招聘赣州本地网站
  • 整套网站模板下载中山高端企业网站设计