使用配置cppjson库,使用cppjson读取json文件
配置cppjson库
本文使用已经生成好的lib文件和头文件,文末附有下载链接。也可以在官网下载然后生成。本文使用环境为vs2013。
准备文件
将json的头文件复制到自己项目的include文件夹中,并将lib_json.lib文件复制到lib文件夹。
配置vs2013
测试Demo
/*!
* \file Demo.h
* \brief 用来测试cppjson库
*
*详细概述
*
* \author hthou
* \version 0.0.1
* \date 2021/07/08
*/
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
//添加需要的头文件
#include "include/json/json.h"
using namespace std;
int main(int argc, _TCHAR* argv[])
{
cout << "测试json写入" << endl;
Json::Value jsonRoot;
Json::Value jsonItem;
jsonItem["item1"] = "123";
jsonItem["item2"] = "456";
jsonItem["item3"] = 3;
jsonRoot.append(jsonItem);
jsonItem.clear();//清除上面已经赋值的项
jsonItem["First"] = 1;
jsonItem["Second"] = 2.0F;
jsonItem["Third"] = "3";
jsonRoot.append(jsonItem);
cout << "测试json写入到文件" << endl;
ofstream ofs;
ofs.open("test1.json");
ofs << jsonRoot.toStyledString();
ofs.close();
cout << "测试json读取" << endl;
string sJson = jsonRoot.toStyledString();
jsonRoot.clear();
Json::Reader jsonReader;
//使用parse函数将字符串转化为json对象
if (!jsonReader.parse(sJson, jsonRoot))
{
return -1;
}
for (auto it = jsonRoot.begin();
it != jsonRoot.end();
it++)
{
for (auto sit = it->begin();
sit != it->end();
sit++)
{
cout << sit.key() << "\t" << sit.name() << endl;
}
}
cout << "测试读取json文件" << endl;
ifstream ifs;
ifs.open("test1.json");
jsonRoot.clear();
if (!jsonReader.parse(ifs, jsonRoot))
{
ifs.close();
return -1;
}
int item = 0;
for (auto it = jsonRoot.begin();
it != jsonRoot.end();
it++)
{
for (auto sit = it->begin();
sit != it->end();
sit++)
{
cout << sit.name() << endl;
cout << jsonRoot[item][sit.name()] << endl;
}
++item;
}
return 0;
}
测试结果
cppjson文件下载
https://download.csdn.net/download/qq_40815249/20086480?spm=1001.2014.3001.5501