代码之家  ›  专栏  ›  技术社区  ›  hal9000

使用rapidjson向映射添加值

  •  0
  • hal9000  · 技术社区  · 7 年前

    我得到一个原始的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 回复  |  直到 7 年前
        1
  •  1
  •   Ted Lyngmo    7 年前

    #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字符。