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

【C++】4.jsoncpp库:jsoncpp库安装与使用入门

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍jsoncpp的使用。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习知识,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. jsoncpp介绍
    • :blush:2. jsoncpp安装
    • :satisfied:3. jsoncpp入门使用
      • 从字符串读取
      • 写入到字符串
      • 从文件中读取
      • 写入到文件

😏1. jsoncpp介绍

JsonCpp是一个开源的C++库,用于解析、生成和操作JSON格式数据。它支持标准的JSON语法,并具有良好的扩展性和可定制性。

该库提供了简单易用的API,可以轻松地实现JSON数据的读取、写入、修改和查询等操作。它还提供了丰富的错误处理机制和文档化的代码示例,使得初学者也能快速上手。

JsonCpp支持所有主流的C++编译器和操作系统平台,并且在多个开源项目中被广泛应用,如OpenCV、ROS等。同时,该库还提供了Python和Java等其他编程语言的绑定,方便跨语言使用。

JsonCpp是一个功能强大、易用性高、性能优秀的C++ JSON库,为JSON数据的处理提供了便利和效率。

😊2. jsoncpp安装

ubuntu apt安装比较简单:

sudo apt-get install libjsoncpp-dev

引用头文件:

#include "jsoncpp/json/json.h

编译:

g++ main.cpp -o main -ljsoncpp

😆3. jsoncpp入门使用

从字符串读取

#include "jsoncpp/json/json.h"
#include <iostream>
#include <memory>
/*** \brief Parse a raw string into Value object using the CharReaderBuilder* class, or the legacy Reader class.* Example Usage:* $g++ readFromString.cpp -ljsoncpp -std=c++11 -o readFromString* $./readFromString* colin* 20*/
int main() {const std::string rawJson = R"({"Age": 20, "Name": "colin"})";const auto rawJsonLength = static_cast<int>(rawJson.length());constexpr bool shouldUseOldWay = false;JSONCPP_STRING err;Json::Value root;if (shouldUseOldWay) {Json::Reader reader;reader.parse(rawJson, root);} else {Json::CharReaderBuilder builder;const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());if (!reader->parse(rawJson.c_str(), rawJson.c_str() + rawJsonLength, &root,&err)) {std::cout << "error" << std::endl;return EXIT_FAILURE;}}const std::string name = root["Name"].asString();const int age = root["Age"].asInt();std::cout << name << std::endl;std::cout << age << std::endl;return EXIT_SUCCESS;
}

写入到字符串

#include "jsoncpp/json/json.h"
#include <iostream>
/** \brief Write a Value object to a string.* Example Usage:* $g++ stringWrite.cpp -ljsoncpp -std=c++11 -o stringWrite* $./stringWrite* {*     "action" : "run",*     "data" :*     {*         "number" : 1*     }* }*/
int main() {Json::Value root;Json::Value data;constexpr bool shouldUseOldWay = false;root["action"] = "run";data["number"] = 1;root["data"] = data;	// 嵌套if (shouldUseOldWay) {Json::FastWriter writer;const std::string json_file = writer.write(root);std::cout << json_file << std::endl;} else {Json::StreamWriterBuilder builder;const std::string json_file = Json::writeString(builder, root);std::cout << json_file << std::endl;}return EXIT_SUCCESS;
}

从文件中读取

package.json

{"name": "tmp","version": "1.0.0","dependencies": {}
}

readFile.cpp

#include <iostream>
#include <fstream>
#include <jsoncpp/json/json.h>using namespace std;int main(){ifstream ifs("package.json");Json::Reader reader;Json::Value obj;reader.parse(ifs, obj);cout << " name " << obj["name"].asString() << endl;return 0;
}

写入到文件

fileWrite.cpp

#include <iostream>
#include <fstream>
#include <jsoncpp/json/json.h>using namespace std;int main(){fstream fs;fs.open("package_new.json",ios::out); // ios::out|ios::app为追加Json::Value root;Json::Value data;root["action"] = "run";data["number"] = 1;root["data"] = data;	// 嵌套Json::StreamWriterBuilder builder;const std::string json_file = Json::writeString(builder, root);// std::cout << json_file << std::endl;fs << json_file << endl;  // 写入文件fs.close();return 0;
}

在这里插入图片描述

以上。

http://www.lryc.cn/news/90321.html

相关文章:

  • HTML、CSS、 JavaScript介绍(二)
  • 高效益的淘客APP要怎么开发,需要哪些功能
  • Java基础--->IO流(2)【常见IO模型】
  • JavaScript let 和 const
  • 云原生下多集群的监控系统背景、架构设计与实现
  • 利用OpenCV处理图像
  • 【面试实战】SpringIoC、AOP、MVC面试实战
  • [Redis 分布式锁 ]
  • 如何创建Vue实例?Vue实例有哪些属性和方法
  • InnoDB Cluster集群Mysql Router代理层最佳实践
  • RabbitMQ系列-概念及安装
  • 进程间通信之共享内存
  • 网络连接中的舔狗协议
  • 一分钟了解乐观锁、悲观锁、共享锁、排它锁、行锁、表锁以及使用场景
  • 【C++】C++ 中的 IO 流
  • QFuture的使用
  • 通过dockerfile将nginx、前端和后端封装成一个镜像
  • 如何利用CiteSpace快速锁定领域内最新研究热点并制作精美的可视化专题图?
  • 嵌入式开发从入门到精通之第二十二节:蓝牙芯片CC254x ADC 电压测量
  • 北邮22信通:二叉树显示路径的两种方法 递归函数保存现场返回现场的实例
  • vue 3 第二十八章:组件十二(组件的v-model、多v-model)
  • LCD 显示
  • 互联网医院开发|在线问诊系统架构设计功能有哪些?
  • 数据安全运营有效管理-数据安全复合治理框架和模型解读(1)
  • 【刷题之路】LeetCode 面试题 03.02. 栈的最小值
  • 如何处理图片排重(精准排重,相似排重)
  • 盐城北大青鸟“北大青鸟杯”IT精英挑战赛设中心评审隆重开赛
  • Pluma 插件管理框架
  • Leetcode11 盛最多水的容器
  • Java