Добавить значения на карту с помощью rapidjson - PullRequest
0 голосов
/ 20 ноября 2018

Я получаю необработанную строку JSON

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

с полученного мной звонка.

Я читал, что rapidjson - лучший способ анализа строки json в cpp.

Итак, я попытался сделать что-то вроде этого:

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 голосов
/ 20 ноября 2018

Это не дало мне ошибки:

#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 символ в данных.

...