C ++中json文件的简单输出?

时间:2015-10-04 22:57:09

标签: c++ json parsing

我是C ++的新手,我在使用json文件时遇到了麻烦。我正在使用Xcode(版本6.4)。例如,我的json文件具有与此类似的格式:

[
 {
  "assignmentName": "Physics 1",
  "dueDate": "2015-10-15T20:11:20Z",
  "priority": "High",
 },
 {
  "assignmentName": "Research Paper",
  "dueDate": "2015-11-18T00:40:25Z",
  "priority": "Low"
 }
]

我正在尝试做的一个例子是编写在我的json文件中查找信息的代码。如果我想打印2015年11月11日到期的作业名称,我希望我的输出成为“研究论文”。

过去几天我一直在研究这个问题而且一直陷入困境。我查看了http://www.json.org并查看了C ++下列出的json解析器。我试过和他们一起工作,但是(1)他们的代码对我来说太复杂了(我不懂语法,甚至在阅读他们的例子之后)或者(2)我被要求使用其他库。在查看C ++列表下面的每个解析器之后,json(https://github.com/nlohmann/json)似乎是我使用的最简单的解析器,但我仍然感到非常迷失。

我正在寻找一些简单的东西。我想做的就是输出我在json文件中调用的任何变量的值(调用“assignmentName”,打印“Physics 1”)。

从与朋友交谈并模糊地试图理解解析器,似乎为了让我在我的json文件中获取某个变量的值,我需要实际将我的json文件的内容粘贴到我的Xcode项目中。这是真的吗?

如果有人可以指导我使用更好的解析器,更好的方法或某些语法字典,我们将非常感激!

1 个答案:

答案 0 :(得分:1)

使用你提到的json库,相关的代码应该是

#include "json.hpp"
#include <iostream>

using json = nlohmann::json;
// ... In some method, e.g. main...
std::ifstream file = {"yourfilename.json"};
json obj;
file >> obj;
std::cout << obj[0]["dueDate"]; // Debug output
// End of code