我真的很困惑,为什么我得到一个解析错误,当我试图解析一个文件在C++使用nlohmann库。
我的代码与我从他们的GitHub页面复制的代码完全相同:
using json = nlohmann::json;
int main() {
ifstream ifs("test.json");
if (nlohmann::json::accept(ifs))
cout << "accepted" << endl;
else
cout << "not accepted" << endl;
json j = json::parse(ifs);
}
JSON文件就是这样的:
{
"test": 5
}
出于某种原因,当我到达parse()
函数时,这会抛出一个错误,尽管accept()
函数返回true,这意味着JSON被接受为有效。
当我做这样的事情时:
json j = json::parse(R"({"test": "aaa"})");
这样就行了。但是我不能解析ifstream
对象。
有谁知道这里可能有什么问题吗?
我不知道,我也不知道,因为似乎我做的一切都是对的。
1条答案
按热度按时间avkwfej41#
一旦
nlohmann::json::accept
返回,流ifs
就被消耗了。当你稍后使用
json::parse(ifs)
时,你试图解析本质上是一个空文件,而空字符串不是一个有效的json文档。您需要倒带或重新打开文件。