如何使用 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;
  }
}