gpt4 book ai didi

c++ - 替换rapidjson中成员的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:09:08 27 4
gpt4 key购买 nike

我目前正在使用 rapidjson 开发一个 C++ 项目。

我的程序在套接字上接收一些 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 的公认答案,所以我错过了什么。

最佳答案

我已经设法通过一些游戏和运气找到了这个问题的答案。

我变了

rapidjson::Value::Member* sshPasswordMember = sshDetails.FindMember("sshPassword");
sshPasswordMember->name.SetString(sshPassword.c_str(), jsonObject.GetAllocator());

成为

rapidjson::Value::MemberIterator sshPasswordMember = sshDetails.FindMember("sshPassword");
sshPasswordMember->value.SetString(sshPassword.c_str(), jsonObject.GetAllocator());

关于c++ - 替换rapidjson中成员的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44604978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com