我正在尝试使用RapidJson解析c ++中的json数据。我不知道我在哪里做错了,但是我的主张失败了。当我尝试调试运行时的显示sigabrt行断言。社区我感谢您的见解。感谢您回答这个天真的问题。

#include <iostream>
#include <assert.h>
#include "hpdf.h"
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include <rapidjson/istreamwrapper.h>
#include <fstream>

int main() {

    std::ifstream ifs("/home/is/..../test.json");
    rapidjson::IStreamWrapper isw(ifs);

    rapidjson::Document document;
    document.ParseStream(isw);


    assert(document.IsObject());

    rapidjson::Value::MemberIterator hello = document.FindMember("timeStamp");
    std::string vali = document["timestamp"].GetString();
    std::cout << vali << std::endl;

    return 0;

}


我也尝试过使用RapidJson文件流,但同样在同一行中失败了。

[
  {
    "timeStamp": "...",
    "alertType": "...",
    "instanceId": 8

   }
  ]

最佳答案

阅读有关JSON的更多信息。

输入文档(以[开头)是一个包含单个JSON对象的JSON数组。

我建议使用document.GetType(),然后对其结果进行不同的处理(也许使用switch)。

因此document.IsObject()为假是正常的。对于您的输入document.IsArray()应该为true,并且可以通过document[0]访问该数组中的JSON对象

关于c++ - 断言RapidJson失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46615307/

10-15 17:56