#c #json #casablanca
#c #json #касабланка
Вопрос:
web::json::value obj;
obj[JSONKeyRequest] = web::json::value::string(JSONValueRequest);
Я создаю значение JSON и вставляю в него некоторый ключ и значения.
Затем я получаю этот объект в другой функции, пытаясь проверить, равен ли obj[JSONKeyRequest] «abc», но это не работает:
web::json::value getObj = this->GetSendObj();
if (getObj[JSONKeyRequest] == web::json::value::string(L"abc"))
{
}
Однако VC продолжает показывать: «Ошибки: никакие операторы [] не соответствуют этим операндам, типы операндов являются постоянными web::json::value[std::wstring]
Итак, как я могу получить значение на основе ключа и сравнить значение со строкой?
Ответ №1:
Прежде всего, ошибка сообщает вам, какими именно должны быть аргументы.
для json требуются аргументы wstring, или, если не wstring, вы можете вводить литералы.
obj[L"JSONKeyRequest"] = web::json::value(L"JSONValueRequest");
должно сработать.
Во-вторых, для сравнения попробуйте сначала объявить wstring, а затем сравнить, как
wstring temp = "abc";
if (getObj["JSONKeyRequest"] == temp)
{
}
Это должно сработать.
Комментарии:
1. JSONKeyRequest — это макрос, определяющий строку. Ошибка возникает при getObj[JSONKeyRequest] , это указывает на то, что ошибка возникает с первой фигурной скобкой [ , а не потому, что в правой части знака равенства.
Ответ №2:
if (getObj.at(key) == web::json::value::string(L"abc"))
Это работает для меня.