C++ JsonCPP解析.json文件

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;
}

输出成果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要解析JSON文件,首先需要安装jsoncpp库,可以通过以下命令安装: ``` sudo apt-get install libjsoncpp-dev ``` 安装完毕后,就可以使用jsoncpp库来解析JSON文件了。下面是一个简单的示例程序: ```cpp #include <iostream> #include <fstream> #include <jsoncpp/json/json.h> using namespace std; int main() { ifstream ifs("example.json"); Json::Reader reader; Json::Value root; if (!reader.parse(ifs, root)) { cout << "Failed to parse JSON" << endl; return 1; } string name = root["name"].asString(); int age = root["age"].asInt(); cout << "Name: " << name << endl; cout << "Age: " << age << endl; return 0; } ``` 在这个示例程序中,首先通过ifstream读取example.json文件,然后使用Json::Reader来解析JSON文件解析结果存放在Json::Value对象root中。可以通过root对象来访问JSON中的数据。 在这个示例程序中,我们访问了JSON中的"name"和"age"字段,并将它们打印出来。 需要注意的是,以上示例程序中的JSON文件格式如下: ```json { "name": "John", "age": 30 } ``` 如果JSON文件的格式不正确,解析过程中可能会出现错误。因此,在实际应用中,需要根据实际情况进行错误处理。 ### 回答2: JSONCpp是一个C++的库,用于解析和生成JSON格式的数据。它提供了一组简单的API来读取和修改JSON数据。 使用JSONCpp解析JSON文件的过程包括以下几个步骤: 1. 引入JSONCpp库:在编程环境中,需要将JSONCpp文件引入到项目中。可以从JSONCpp的官方网站上下载并配置库文件。 2. 打开JSON文件:使用JSONCpp库中的`Json::CharReader`来打开JSON文件,将其读取为一个字符串。 3. 解析JSON文件:使用JSONCpp库中的`Json::Value`来解析JSON字符串。可以使用`Json::Reader`的`parse()`方法来将JSON字符串转换为`Json::Value`对象。 4. 提取JSON数据:使用`Json::Value`对象的成员访问运算符`[]`来获取JSON数据。可以使用`isMember()`方法判断指定的成员是否存在,使用`asString()`、`asInt()`等方法获取指定成员的值。 5. 遍历JSON数据:如果JSON数据是一个数组类型,可以使用`size()`方法获取数组的长度,使用`operator[]`来访问数组中的元素。 6. 修改JSON数据:使用`Json::Value`对象的成员访问运算符`[]`来修改JSON数据。可以使用`append()`方法向数组类型的JSON数据中添加元素。 7. 保存JSON文件:使用JSONCpp库中的`Json::StyledWriter`对象将`Json::Value`对象转换为字符串,并将其写入文件中。 总结起来,使用JSONCpp解析JSON文件的过程可以归纳为:引入库文件、打开JSON文件解析JSON文件、提取和操作JSON数据、保存JSON文件。这样就可以实现对JSON文件的读取和解析操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值