2016-09-29 2 views
0
web::json::value obj; 

obj[JSONKeyRequest] = web::json::value::string(JSONValueRequest); 

Я создаю значение JSON и вставляю в него некоторые ключи и значения. Тогда я получаю это OBJ в другой функции, пытаясь проверить, что ли [JSONKeyRequest] равен «ABC», OBJ, но он не работает:Как сравнить значение в JSON на основе ключа C++

web::json::value getObj = this->GetSendObj(); 
if (getObj[JSONKeyRequest] == web::json::value::string(L"abc")) 
{ 
} 

Однако, VC продолжает шоу: "Ошибка: Нет операторов [] соответствует этим операндам, типы операндов: const web :: json :: value [std :: wstring] Итак, как я могу получить значение на основе ключа и сравнить значение со строкой?

ответ

0
if (getObj.at(key) == web::json::value::string(L"abc")) 

Это работает для меня.

0

Первый из все, ошибка говорит вам, какие именно аргументы должны быть.

json ires аргументы wstring, или, если не wstring, вы можете вводить литералы.

obj[L"JSONKeyRequest"] = web::json::value(L"JSONValueRequest"); 

должно работать.

Во-вторых, для сравнения попробуйте возможность объявления wstring первым, а затем сравнивая как

wstring temp = "abc"; 
if (getObj["JSONKeyRequest"] == temp) 
{ 
} 

Это должно работать.

+0

JSONKeyRequest - это макрос, определяющий строку. Ошибка происходит в getObj [JSONKeyRequest], она указывает, что ошибка происходит с первой скобой [, а не потому, что правая сторона знака равенства. – firstaccount

 Смежные вопросы

  • Нет связанных вопросов^_^