#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
  • 解析JSON字符串
  • rapidjson::Document doc;
    doc.Parse(json_string);
    

    其中,json_string是待解析的JSON字符串,解析后的结果存储在doc对象中。

  • 获取JSON值
  • doc["key"]       // 获取key对应的值
    doc[0]           // 获取数组中的第一个值
    doc["obj"]["key"]// 获取嵌套对象中的值
    
  • 获取JSON对象的成员
  • for (auto& m : doc.GetObject()) {
        std::string key = m.name.GetString();  // 获取key
        rapidjson::Value& value = m.value;     // 获取value
    
  • 序列化JSON
  • rapidjson::StringBuffer buffer;
    rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
    doc.Accept(writer);
    std::string json_string = buffer.GetString();
    

    其中,doc是待序列化的JSON对象,序列化后的结果存储在json_string字符串中。

  • 判断JSON值的类型
  • doc.IsObject()    // 是否为对象
    doc.IsArray()     // 是否为数组
    doc.IsString()    // 是否为字符串
    doc.IsNumber()    // 是否为数字
    doc.IsBool()      // 是否为布尔值
    doc.IsNull()      // 是否为null值
    
  • 获取JSON值的属性
  • doc["key"].IsString()          // 判断是否为字符串类型
    doc["key"].GetInt()            // 获取整数值
    doc["key"].GetDouble()         // 获取浮点数值
    doc["key"].GetString()         // 获取字符串值
    doc["key"].GetBool()           // 获取布尔值
    doc["key"].IsNull()            // 判断是否为null值
    doc["key"].Size()              // 获取数组大小
    doc["key"][0]                  // 获取数组中的第一个值
    

    以上是rapidjson的基本使用方法,希望对你有所帮助。如果你还有任何问题,请继续提问。

  •