jsoncpp的安装及使用

paw5zx Lv4

前言

本文操作均在ubuntu20.04下进行。

安装

方法一:apt包管理器

①使用包管理器安装
这种方法比较简单,直接使用apt包管理器安装jsoncpp:

1
apt install libjsoncpp-dev

这条命令会安装jsoncpp的开发库和必需的文件

②查看头文件和库文件
安装完毕后我们可以去找一下jsoncpp的头文件和库文件
头文件位于/usr/include/jsoncpp/json/

库文件位于/usr/lib/x86_64-linux-gnu/

但是我们通过头文件的version.h和动态库文件的realname,可以知道使用apt包管理器安装的jsoncpp的版本号为1.7.4

那如果我需要安装的是jsoncpp的其他版本,就需要下载源代码并编译安装。

方法二:源码编译安装

①在开始编译前,首先要确保系统中安装了g++cmake

②下载jsoncpp源码
从github下载jsoncpp的特定版本并解压,以1.9.3为例:

1
2
wget https://github.com/open-source-parsers/jsoncpp/archive/1.9.3.tar.gz
tar xzf 1.9.3.tar.gz

③编译和安装
进入jsoncpp目录,使用cmake来配置项目并编译安装:

1
2
3
4
5
6
cd jsoncpp-1.9.3
mkdir build
cd build
cmake .. -DBUILD_SHARED_LIBS=ON
make
make install

注意,在cmake ..后面加上了-DBUILD_SHARED_LIBS=ON选项,会生成静态库和共享库。若不添加,则只会生成静态库。

④查看头文件和库文件
通过此方法安装的jsoncpp,其头文件位于/usr/local/include/json/,库文件位于/usr/local/lib/

也不知道为啥,1.9.3版本的共享库soname是libjsoncpp.so.24

使用

编写示例代码

写JSON

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <json/json.h>
#include <iostream>

int main()
{
// 创建一个Json::Value对象
Json::Value root;

// 向对象中添加数据
root["name"] = "John Doe";
root["age"] = 30;
root["isAlive"] = true;
root["address"]["city"] = "New York";
root["address"]["state"] = "NY";

// 创建一个Json::StreamWriterBuilder
Json::StreamWriterBuilder writer;

// 将Json::Value对象转换为字符串
std::string output = Json::writeString(writer, root);

// 打印输出
std::cout << output << std::endl;

return 0;
}

读JSON

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int main() 
{
// JSON字符串
std::string jsonString = R"({"name":"John Doe","age":30,"isAlive":true,"address":{"city":"New York","state":"NY"}})";

// 创建一个Json::CharReaderBuilder
Json::CharReaderBuilder builder;

// 创建一个Json::Value对象
Json::Value root;

// 创建一个错误信息字符串
std::string errors;

// 解析JSON字符串
std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
bool parsingSuccessful = reader->parse(jsonString.c_str(), jsonString.c_str() + jsonString.size(), &root, &errors);

if (!parsingSuccessful) {
// 打印错误信息并退出
std::cout << "Error parsing JSON: " << errors << std::endl;
return 1;
}

// 提取并打印数据
std::cout << "Name: " << root["name"].asString() << std::endl;
std::cout << "Age: " << root["age"].asInt() << std::endl;
std::cout << "Is Alive: " << (root["isAlive"].asBool() ? "Yes" : "No") << std::endl;
std::cout << "City: " << root["address"]["city"].asString() << std::endl;
std::cout << "State: " << root["address"]["state"].asString() << std::endl;

return 0;
}

编译链接

具体操作略
注意链接时要加上-ljsoncpp

输出

写JSON

读JSON

  • 标题: jsoncpp的安装及使用
  • 作者: paw5zx
  • 创建于 : 2024-06-13 14:52:40
  • 更新于 : 2024-10-11 10:23:58
  • 链接: https://paw5zx.github.io/thirdlib-jsoncpp/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论