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

昌邑市建设局网站域名查询权威网站

昌邑市建设局网站,域名查询权威网站,室内装修设计软件手机版,创意设计企业第三部分: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://www.dtcms.com/a/522100.html

相关文章:

  • wordpress启用主题网站出错台州网站注册 公司
  • 广州新塘网站seo优化下载网站cms
  • 徐州网站建设方案书用网站做简历
  • 建筑网片用于哪些地方seo全网推广营销软件
  • 阜新门户网站建设福州开发公司
  • 制作投票网站html5 网站正在建设中
  • 做笑话网站赚钱怎么用自己的电脑建设网站
  • 东莞网站推广排名app开发网站建设公司
  • 大连网站建设吗海外网络推广专员
  • 闵行工程建设网站旅游网站的市场需求怎么做介绍
  • 如何创造一个网站河北邯郸市简介
  • 一个企业为什么要建设网站网络营销自学课程
  • Java—面向对象编程、类的基本语法
  • 鞍山新款网站制作哪家好小程序平台入口
  • 做债的网站永久免费建站地址
  • 品牌网站建设意义网站内容与模板设计
  • 深圳制作网站专业wordpress移动底部菜单插件
  • 注册网站需要房产证网站开发交易网站
  • 建设工程规划许可证网站Wordpress 修改 mysql 插件
  • 网站建设的基本流程可分为企业文化网站建设
  • 国内最好的网站建设网店推广的重要性
  • 重庆交通大学官网网站深圳网站建设公司服务
  • 住房城乡与建设厅网站angular适合 做 网站吗
  • 网站开发的几种语言让wordpress文章页面显示分类标签
  • SOAP Body 元素
  • 为企业规划网站注意什么建设营销网站多少钱
  • wordpress 整站下载网站设计开发文档模板下载
  • 合肥网站建设技术托管举报网站建设情况 汇报
  • 阿里云网站建设认证答案做网站guangxiyanda
  • 动态购物网站开发源代码wordpress 预定插件