0
我目前正在使用rapidjson在C++中进行项目工作。替换rapidjson中的成员的值
我的程序在包含一些验证细节的套接字上接收到一些JSON数据。我登录传入的消息,但我想隐藏密码,以便在日志文件中看不到它。所以我试图获取JSON对象,并替换字符串的每个字符,并将这个替换的字符串放回密码所在的json对象中。
下面是我的代码:
rapidjson::Document jsonObject;
jsonObject.Parse(command.c_str());
string method = jsonObject["method"].GetString();
if (jsonObject.HasMember("sshDetails"))
{
Value& sshDetails = jsonObject["sshDetails"];
string sshPassword = sshDetails["sshPassword"].GetString();
for (int i = 0; i < sshPassword.length(); i++)
{
sshPassword[i] = '*';
}
rapidjson::Value::Member* sshPasswordMember = sshDetails.FindMember("sshPassword");
sshPasswordMember->name.SetString(sshPassword.c_str(), jsonObject.GetAllocator());
//Convert it back to a string
rapidjson::StringBuffer buffer;
buffer.Clear();
rapidjson::Writer<rapidjson::StringBuffer>writer(buffer);
Document jsonDoc;
jsonDoc.Accept(writer);
string jsonString = string(buffer.GetString());
我在下面的行收到一个错误:
rapidjson::Value::Member* sshPasswordMember = sshDetails.FindMember("sshPassword");
我得到的错误是:
No suitable conversion function from rapidjson::GenericMemberIterator<false, rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CtrlAllocator>> to rapidjson::GenericMember::UTF8<char>, myProject...SocketProcessor.cpp
rapidjson::MemoryPoolAllocator<rapidjson::CtrlAllocator>>*exists
我从SO上的另一个问题上的例子中得到了上述结果,这是从rapidjson - change key to another value接受的答案,所以什么是我想念。