如何使用 JsonCpp 动态设置值?
How to set value dynamically with JsonCpp?
我需要编写一个函数,它将接受两个参数,一个键路径和一个值,并将填充一个 JSON 对象。但是,它不起作用,因为我使用的值是按值传递的;我不知道如何重构函数,所以使用指针代替。
这是我的,它不会产生任何错误,但不会更新 root
,我需要更改什么才能使 value
持久化?
void JSONConfig::setValue(string key, Json::Value value)
{
stringstream tokenizer(key);
string token;
string lastToken;
Json::Value node = root;
while (getline(tokenizer, token, '.'))
{
if (!lastToken.empty()) node = node[lastToken];
lastToken = token;
}
if (!lastToken.empty())
{
node[lastToken] = value;
}
}
最后,我写的是这个,好像还行。
void JSONConfig::setValue(string key, Json::Value value)
{
stringstream tokenizer(key);
string token;
string lastToken;
Json::Value *node = &root;
while (getline(tokenizer, token, '.'))
{
if (!lastToken.empty()) node = & ((*node)[lastToken]);
lastToken = token;
}
if (!lastToken.empty())
{
(*node)[lastToken] = value;
}
}
我需要编写一个函数,它将接受两个参数,一个键路径和一个值,并将填充一个 JSON 对象。但是,它不起作用,因为我使用的值是按值传递的;我不知道如何重构函数,所以使用指针代替。
这是我的,它不会产生任何错误,但不会更新 root
,我需要更改什么才能使 value
持久化?
void JSONConfig::setValue(string key, Json::Value value)
{
stringstream tokenizer(key);
string token;
string lastToken;
Json::Value node = root;
while (getline(tokenizer, token, '.'))
{
if (!lastToken.empty()) node = node[lastToken];
lastToken = token;
}
if (!lastToken.empty())
{
node[lastToken] = value;
}
}
最后,我写的是这个,好像还行。
void JSONConfig::setValue(string key, Json::Value value)
{
stringstream tokenizer(key);
string token;
string lastToken;
Json::Value *node = &root;
while (getline(tokenizer, token, '.'))
{
if (!lastToken.empty()) node = & ((*node)[lastToken]);
lastToken = token;
}
if (!lastToken.empty())
{
(*node)[lastToken] = value;
}
}