如何比较基于密钥C++的JSON中的值

问题描述:

web::json::value obj; 

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

我创建JSON值并向其中插入一些键和值。 后来我得到这个OBJ另一个函数,试图检查obj是否[JSONKeyRequest]等于“ABC”,但它不工作:如何比较基于密钥C++的JSON中的值

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

然而,VC一直表示:“错误:没有运营商[]匹配这个操作数,操作数类型是const web :: json :: value [std :: wstring] 因此,我怎么能得到基于键的值并且将该值与一个字符串进行比较?

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

这一个适合我。

所有,错误告诉你究竟应该是什么。

json requ ires wstring参数,或者如果不是wstring,则可以输入文字。

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

应该工作。

其次,比较尝试声明的wstring第一,然后比较喜欢

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

这应该工作。

+0

JSONKeyRequest是一个宏定义了一个字符串。该错误发生在getObj [JSONKeyRequest],它指出错误发生在第一个大括号[,不是因为等号的右侧。 – firstaccount