我正在尝试解析Json文件并将数据存储到2D数组或向量中。 Json文件如下所示:
{"n" : 2,
"x" : [[1,2],
[0,4]]}
这是我的代码的样子,但是我不断收到“ json.exception.parse_error.101”错误
#include <iostream>
#include "json.hpp"
#include <fstream>
using json = nlohmann::json;
using namespace std;
int main(int argc, const char * argv[]) {
ifstream i("trivial.json");
json j;
i >> j;
return 0;
}
答案 0 :(得分:1)
简而言之,您需要在处理之前进行检查,如下所示:
ifstream i("trivial.json");
if (i.good()) {
json j;
try {
i >> j;
}
catch (const std::exception& e) {
//error, log or take some error handling
return 1;
}
if (!j.empty()) {
// make further processing
}
}
答案 1 :(得分:0)
我同意以下建议:您看到的内容可能是由于无法正确打开文件而引起的。关于如何临时解决该问题以便可以测试其余代码的一个明显示例,您可以考虑从istringstream
读取数据:
#include <iostream>
#include <iomanip>
#include <nlohmann/json.hpp>
#include <sstream>
using json = nlohmann::json;
using namespace std;
int main(int argc, const char * argv[]) {
std::istringstream i(R"(
{"n" : 2,
"x" : [[1,2],
[0,4]]}
)");
json j;
i >> j;
// Format and display the data:
std::cout << std::setw(4) << j << "\n";
}
此外,还要注意通常应如何包含标头。您将编译器<json-install-directory>/include
作为要搜索的目录,并且您的代码使用#include <nlohmann/json.hpp>
来包含标题。