我得到了一个原始的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有解析错误。知道为什么会这样吗?
此外,一旦我能够解析值,就想将它们作为键值对添加到标准映射中。有人能指出我正确的方向吗?
答案 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字符。