使用RapidJSON添加值以映射

时间:2018-11-19 21:18:53

标签: c++ json stdmap rapidjson

我得到了一个原始的json字符串

{"vehicle": {"brand": "zonda","color": "blue"},"username": {"brand": "doyota","color": "red"}}

通过我拨打的电话。

我读到RapidJSON是解析cpp中json字符串的最佳方法。

所以我尝试做这样的事情:

const char* json = data.c_str();
rapidjson::Document document;
if (document.Parse(json).HasParseError()) {

    cout << "has parse error" << endl;

    return 1;
}
else {
    assert(document.IsObject());
}

在这里说json有解析错误。知道为什么会这样吗?

此外,一旦我能够解析值,就想将它们作为键值对添加到标准映射中。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

这没有给我任何错误:

#include <iostream>
#include "rapidjson/document.h"
#include "rapidjson/error/en.h"

using namespace rapidjson;

int main() {
    Document d;
    std::string json = R"raw({"vehicle": {"brand": "zonda","color": "blue"},"username": {"brand": "doyota","color": "red"}})raw";

    if (d.Parse(json.c_str()).HasParseError()) {
        std::cout << "has error\n";
    } else {
        std::cout << "no error\n";
    }
}

尝试过C ++ 11-C ++ 20,一切似乎都很好。我的猜测是您的数据中包含一些非UTF8字符。