c++ abort() 已在 rapidjson 上被调用
c++ abort() has been called on rapidjson
我正在做一些我需要使用 rapidjson 以获得 json 值
的代码
首先我从文件中检索信息
ifstream myReadFile;
myReadFile.open("results.txt");
string output;
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;
}
}
myReadFile.close();
results.txt的例子:
[{"ID":1,"Name":"SomeName","Description":"Pub"}]
然后我用rapidjson过滤信息,
const char * json = output.c_str();
Document document;
document.Parse(json);
cout << document["ID"].GetInt(); //Error on the line
cout << document["Name"].GetString());
但我收到此错误:调试错误!已调用 abort()
想法?
感谢您的宝贵时间
您的 json 是一个数组,但您正试图解析它,因为它不是!
从 json 字符串中删除方括号,然后您的代码应该可以工作或解析数组:
for (SizeType i = 0; i<document.Size(); i++)
{
const rapidjson::Value &data_vec = document[i];
int id = data_vec["ID"].GetInt();
std::string name = data_vec["Name"].GetString();
}
我正在做一些我需要使用 rapidjson 以获得 json 值
的代码首先我从文件中检索信息
ifstream myReadFile;
myReadFile.open("results.txt");
string output;
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;
}
}
myReadFile.close();
results.txt的例子:
[{"ID":1,"Name":"SomeName","Description":"Pub"}]
然后我用rapidjson过滤信息,
const char * json = output.c_str();
Document document;
document.Parse(json);
cout << document["ID"].GetInt(); //Error on the line
cout << document["Name"].GetString());
但我收到此错误:调试错误!已调用 abort()
想法?
感谢您的宝贵时间
您的 json 是一个数组,但您正试图解析它,因为它不是!
从 json 字符串中删除方括号,然后您的代码应该可以工作或解析数组:
for (SizeType i = 0; i<document.Size(); i++)
{
const rapidjson::Value &data_vec = document[i];
int id = data_vec["ID"].GetInt();
std::string name = data_vec["Name"].GetString();
}