C++ JSON库json11的使用方法
创始人
2024-06-03 14:01:42
0

提纲
1、下载并集成到自己的项目
2、基本用法
3、使用案例



1 下载并集成到自己的项目

json11是一个轻量级的C++11库, 提供JSON的序列化和反序列化功能。它的主页是:https://github.com/dropbox/json11。
首先用git clone https://github.com/dropbox/json11.git将json11库下载到本地。

使用时只需要在我们的工程中引入头文件json11.hpp和源文件json11.cpp即可使用。

在自己的项目中只需要include “json11.hpp”,就可以在自己的代码中使用json11的库函数了。



2 基本用法

/*** 1、将json对象转成json字符串*/
Json my_json = Json::object {{ "key1", "value1" },{ "key2", false },{ "key3", Json::array { 1, 2, 3 } },
};
std::string json_str = my_json.dump();/*** 2、 将普通对象序列化成json字符串**/
class Point {
public:int x;int y;Point (int x, int y) : x(x), y(y) {}Json to_json() const { return Json::array { x, y }; }
};std::vector points = { { 1, 2 }, { 10, 20 }, { 100, 200 } };
std::string points_json = Json(points).dump();/*** 3、将json字符串转成json对象,并取其中的字段,通过这些字段可以进一步构造普通对象*/
std::string srcJson = "{\"code\":0, \"flag\":true, \"msg\":\"success\"}";//反序列化为json对象
std::string err;
json11::Json mJson = json11::Json::parse(srcJson, err);//获取对应字段的值
int code = mJson["code"].int_value();
bool flag = mJson["flag"].bool_value();
std::string msg = mJson["msg"].string_value();std::cout << "code : " << code << std::endl;
std::cout << "flag : " << flag << std::endl;
std::cout << "msg : " << msg << std::endl;


3、使用案例

本案例是为了使用json11而写的,为正式项目中使用做了一个基本的验证。

root@DF-01:/home/dfcv_dev/fastdds/soa_v2c/src/Util/Json# tree
.
├── CMakeLists.txt
├── json11.cxx
├── json11.h
└── Json11Main.cxx0 directories, 4 files
root@DF-01:/home/dfcv_dev/fastdds/soa_v2c/src/Util/Json# 

以上项目是用CMake去管理编译过程的,所以有一个CMakeLists.txt文件。主要的使用代码在Json11Main.cxx中,项目中要包括json11.h和json11.cxx是自然的事情。

下面我列出CMakeLists.txt和Json11Main.cxx中的代码,方便需要的人自己取用。

点击查看CMakeLists.txt代码
cmake_minimum_required(VERSION 3.16.3)project("Json11Main")set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)message(STATUS "Configuring Json11Main...")
add_executable(Json11Main  json11.cxx Json11Main.cxx)

下面列出Json11Main.cxx中的代码,这些代码可以在项目中直接使用,稍微修改就可以。

点击查看Json11Main.cxx代码
#include "json11.h"#include int main()
{/*** 1 JsonObject 到 JsonStr*/json11::Json my_json = json11::Json::object{{"key1", "value1"},{"key2", false},{"key3", json11::Json::array{1, 2, 3}},};std::string json_str = my_json.dump();std::cout << json_str << std::endl;/*** 2 jsonStr 到 jsonObject*/std::string srcJson = "{\"code\":0, \"flag\":true, \"msg\":\"success\"}";// 反序列化为json对象std::string err;json11::Json mJson = json11::Json::parse(srcJson, err);std::cout << mJson.dump() << std::endl;
}


参考资料
1、https://blog.csdn.net/new9232/article/details/128511137
2、https://github.com/dropbox/json11



相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...