Мне нужно прочитать файл json с библиотекой jsoncpp.
У меня есть этот файл:
{"one":false,"two":[{"id":"first"},{"id":"second"}],"three":550}
Если мне нужно прочитать только первый идентификатор элемента «two», я использую:
std::string contents; //Contain the file
Json::Value root;
Json::Reader reader;
reader.parse(contents, root, false);
std::string aux = root["two"][0]["id"].asString();
Он отлично работает в Linux, но когда я пробую это в Windows, у меня появляется эта ошибка:
error: ambiguous overload for 'operator[]' in 'root.Json::Value::operator[](((const char*)"two"))[0]'
Почему это происходит и как я могу это исправить? Благодарю.
Решено: есть два operator[]
один с int
в качестве параметра и других с const char
в качестве параметра, и компилятор не знает, кого использовать в Windows, но да, в Linux. Теперь я использую [0u]
вместо [0]
чтобы указать число в качестве параметра, и он работает нормально.
Это сводило меня с ума, пока я не наткнулся на этот вопрос, я загадочно понял это:
Просто приведите его к Json :: Uint (по какой-то причине) или используйте ‘u’:
MapEvent::MapEvent(Json::Value& val)
{
operator_enum = val.get(0u, "").asString();
}
Других решений пока нет …