c++ - rapidjson - 更改对象 - 添加元素/项目

标签 c++ json element add rapidjson

如何将成员添加到 rapidjson 对象然后打印它?

例如添加

 itemtwo => "world" ;

给这个对象:

{"itemone":"hello"}  

我试过了

 char buff[] = "{\"itemone\":\"hello\"}";
 rapidjson::Document json_obj;
 if(json_obj.Parse<0>(buff.c_str()).HasParseError() == false){        
    json_obj["itemtwo"].SetString("world");
    rapidjson::StringBuffer strbuf;
    rapidjson::Writer<rapidjson::StringBuffer> writer(strbuf);
    json_obj.Accept(writer);
    cout<<strbuf.GetString()<<endl;
 }

我得到以下输出:

{"itemone":"hello"}  

表示没有变化。 我做错了什么?

最佳答案

json_obj["itemtwo"] 只能找到具有该名称的成员,该名称不存在。它不会创建新条目(如在 std::map 中)。

要操作对象,请使用 AddMember() 和其他相关成员函数,例如

json_obj.AddMember("itemone", "hello", json_obj.GetAllocator());

可以引用rapidjson user guide和/或包中的 tutorial.cpp。

关于c++ - rapidjson - 更改对象 - 添加元素/项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798483/

相关文章:

java - 如何解析 JSON 并将其值转换为数组?

java - 如何在 Java 中使用 DOM 获取目标命名空间及其前缀?

c - C 中数组中的元素数量,不带 sizeof

c++ - 我应该更喜欢 mixin 还是函数模板来为一组不相关的类型添加行为?

java - Talend 的 JSON 解析器

java - Elasticsearch - 默认情况下不映射字段

arrays - 如何在批处理中返回数组的元素?

c++ - 最大可能的倍数和

C++ 指向具有匹配函数签名的任何类的成员函数的指针

c++ - 通过使用范围解析避免多重继承引起的歧义