1、下载
GitHub搜索JsonCPP,点击收藏量最多的那个下载后解压到本地;
1.1 第一种方法
直接下载压缩包解压即可;
1.2 第二种方法
在windows下使用cmd,打开对话框后输入git clone [下图"2"处复制的链接]即可下载;
2、新建项目
打开VS 2015,新建项目,选择空项目;
选择新建项,建立main.cpp;
3、包含库及链接已有项
需要对第一步下载的文件中的include文件夹和src文件夹做处理
将include文件夹包含后确定
选择添加现有项
将src文件夹中lib_json文件夹打开,将其中三个.cpp文件选中添加
4、代码
源json文件
#include <iostream>
#include <fstream>
#include "json/json.h"
using namespace std;
int main() {
ifstream ifile("Untitled-1.json");//此文件为leetcode题库网页
if (!ifile)
{
cout << "open failed" << endl;
return 0;
}
Json::Reader rd;
Json::Value root;
if (!rd.parse(ifile, root)) {//将ifile读取的数据传给root
cout << "error" << endl;
return 0;
}
if (root["data"].isNull())
{
return 0;
}
ofstream ofile("Questions.csv");
ofile << "题目,题解,通过率,难度" << endl;
size_t nQuestions = root["data"]["problemsetQuestionList"]["questions"].size();
for (size_t i = 0; i < nQuestions; ++i)
{
if (!root["data"]["problemsetQuestionList"]["questions"].isNull())
{
Json::Value item = root["data"]["problemsetQuestionList"]["questions"][i];
/*源数据只在questions后有[],[]内每组{}内都是一组数据,所以questions有多个,
需要循环来处理,如果data和problemsetQuestionList后面也有[],则需要多层for循
环嵌套,此处item = root["data"][i]["problemsetQuestionList"][j]["questions"][k];*/
ofile << item["title"].asString() << ","
<< item["solutionNum"].asString() << ","
<< item["acRate"].asDouble() << ", "
<< item["difficulty"].asString() << endl;
//将每组questions中的所需字段写入到.csv文件,以","分隔
}
}
return 0;
}
输出成果