rapidjson - 将键更改为另一个值

2024-04-19

这里是rapidjson的hello world。我怎样才能更改密钥"hello" to "goodbye"并从 json 中获取字符串?我的意思是我想解析 json,更改一些键并获取 json 字符串,就像{"goodbye" : "world"}.

const char json[] = "{ \"hello\" : \"world\" }";

rapidjson::Document d;
d.Parse<0>(json);

  const char *json = R"({"hello": "world"})";
  rapidjson::Document d;
  d.Parse<0> (json);

  rapidjson::Value::Member* hello = d.FindMember ("hello"); if (hello) {
    d.AddMember ("goodbye", hello->value, d.GetAllocator());
    d.RemoveMember ("hello");
  }

  typedef rapidjson::GenericStringBuffer<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>> StringBuffer;
  StringBuffer buf (&d.GetAllocator());
  rapidjson::Writer<StringBuffer> writer (buf, &d.GetAllocator());
  d.Accept (writer);
  json = buf.GetString();

附:你可能应该复制json之后因为它的内存将被释放d.

附言您还可以就地替换字段名称,而不删除它:

rapidjson::Value::Member* hello = d.FindMember ("hello");
if (hello) hello->name.SetString ("goodbye", d.GetAllocator());

或者在迭代期间:

for (auto it = d.MemberBegin(); it != d.MemberEnd(); ++it)
  if (strcmp (it->name.GetString(), "hello") == 0) it->name.SetString ("goodbye", d.GetAllocator());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rapidjson - 将键更改为另一个值 的相关文章

随机推荐