首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rapidJson的断言失败了

rapidJson的断言失败了
EN

Stack Overflow用户
提问于 2017-10-06 23:48:02
回答 3查看 4.6K关注 0票数 0

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

代码语言:javascript
复制
#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 filestream,但在同一行中再次失败。

代码语言:javascript
复制
[
  {
    "timeStamp": "...",
    "alertType": "...",
    "instanceId": 8

   }
  ]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-07 00:18:59

阅读更多关于JSON的信息。

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2017-10-06 23:57:53

99%认为你的JSON是错的。

然而,"timeStamp""timestamp"并不相同

票数 1
EN

Stack Overflow用户

发布于 2017-10-08 16:23:44

伙计们我想我已经解决了问题。你们从一开始就是对的。我的data.json有个问题。当.json文件中没有[]时,这个库可以工作。我去掉了方括号,一切似乎都很好。谢谢你的时间和见解。我感谢你所有的回应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46615307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档