assert对于rapidJson失败了

时间:2017-10-06 23:48:03

标签: c++ rapidjson

我正在尝试使用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

   }
  ]

3 个答案:

答案 0 :(得分:1)

99%你的JSON错了。

然而,"timeStamp""timestamp"

不同

答案 1 :(得分:0)

详细了解JSON

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

我建议使用document.GetType()然后对其结果进行不同的处理(可能使用document.IsObject())。

document.IsArray()为假是正常的。对于您的输入document[0]应为true,并且可以通过{{1}}

访问该数组中的JSON对象

答案 2 :(得分:0)

伙计们我认为我已经解决了这个问题。你们从一开始就是对的。我的data.json有问题。当.json文件中没有[]时,此库可以正常工作。我删除了方括号,一切似乎都运行正常。感谢您的时间和见解。我感谢您的所有回复。