概要
本文分享了C++对Json类型的定义及使用,将string类型输入数据按Json格式保存以及对Json格式数据进行解析一系列操作。
技术细节
一、C++Json库的下载与cmake.txt编写
1、Json的github仓库地址:链接地址,下载准备json库。
(1)、点击链接地址到github仓库页面:
(2)在自己的工程目录下新建名为json的文件夹
我的工程目录为src
新建json文件夹
(3)、github仓库页面将"include/json"目录下的所有头文件和"json/lib_json"目录下的除了CMakeLists.txt以外的所有文件下载到自己的工程目录下,可以将仓库整个工程压缩包下载到本地在移到自己工程目录下即可
下载好后自己工程中的文件如图所示:
在工程目录json文件夹新建CMakeLists.txt文件并加入以下内容:
# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.10)
#设置编译器版本C++11
set(CMAKE_CXX_STANDARD 11)
# 项目信息
project (json)
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS)
# 生成链接库json
add_library (json ${DIR_LIB_SRCS})
二、开发过程中Json的使用(string与Json互转)
以下以src工程中的main.cpp来简单介绍Json的使用
(1)、在src目录下新建CMakeLists.txt添加如下内容来链接json库使用
# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.10)
#设置编译器版本C++11
set(CMAKE_CXX_STANDARD 11)
# 项目信息
project (src)
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 添加 json子目录
add_subdirectory(json)
# 指定生成目标test
add_executable(test main.cpp)
# 为工程添加链接库
target_link_libraries(test json)
(2)在src下新建main.cpp并添加如下内容。
#include <stdio.h>
#include <iostream>
#include <string>
#include "json/json.h"
using namespace std;
using namespace Json;
int main()
{
std::string sects = "灵溪宗";
int32_t id = 20230722;
std::string name = "白小纯";
double hight = 173.5;
double weight = 57.9;
//将数据转换为Json格式
Json::Value str;
str["Sects"] = sects;
str["Id"] = id;
str["Name"] = name;
str["Hight"] = hight;
str["Weight"] = weight;
//将整个Json转为string
std::string strTemp = str.toStyledString();
cout<<strTemp<<endl;
//解析Json数据
Json::Reader reader;
Json::Value root;
std::string SECTS;
int32_t ID;
std::string NAME;
double HIGHE;
double WEIGHT;
if(reader.parse(strTemp,root))
{
SECTS = root["Sects"].asString();
ID = root["Id"].asInt();
NAME = root["Name"].asString();
HIGHE = root["Hight"].asDouble();
WEIGHT = root["Weight"].asDouble();
}
cout<<"SECTS:"<<SECTS<<endl
<<"ID:"<<ID<<endl
<<"NAME:"<<NAME<<endl
<<"HIGHE:"<<HIGHE<<endl
<<"WEIGHT:"<<WEIGHT<<endl;
return 0;
}
然后再新建build目录执行命令:
cmake…
make
新建build目录是为了防止使用cmake命令编译时产生的文件污染工程目录。
(3)、然后build目录下就生成了名为test的可执行文件
输入命令执行:
./tets
小结
本文是博主在技术探索道路上留下的第一屡痕迹,希望能够帮到大家,有不足的地方欢迎广大志同道合的朋友指正,谢谢!