1、包含头文件

#include "rapidjson/stringbuffer.h"
#include "rapidjson/document.h"
#include "rapidjson/reader.h"
#include "rapidjson/writer.h"

using namespace rapidjson;

2、读json字符串内容
string str = "{"name":"qfl","age":20,"letter":["a","b","c"],"location":{"province":"fujian","city":"xiamen","number":16},"book":[{"name":"book1","isbn":"123"},{"name":"book2","isbn":"456"}],"healthy":true}";
rapidjson::Document doc;
doc.Parse<0>(str.c_str());
if(doc.HasParseError())
{
  rapidjson::ParseErrorCode code = doc.GetParseError();
  return;
}
else
{
  if(doc.HasMember("name"))
    string name = doc["name"].GetString();
  if(doc.HasMember("age"))
    int age = doc["age"].getInt();   if(doc.HasMember("letter"))
  {
    rapidjson::Value& letter = doc["letter"];
    if(letter.IsArray() && !letter.Empty())
    {
      for(rapidjson::SizeType i=0;i<letter.Size();i++)
      {
        string strValue = letter[i].GetString();
      }
    }
  }   if(doc.HasMember("location"))
  {
    rapidjson::Value& location = doc["location"];
    if(location.IsObject())
    {
      if(location.HasMember("province"))
        string strProvince = location["province"].GetString();
      if(location.HasMember("city"))
        string strCity = location["city"].GetString();
      if(location.HasMember("number"))
        int number = location["number"].GetInt();
    }
  }   if(doc.HanMember("book"))
  {
    rapidjson::Value& book = doc["book"];
    if(book.IsArray() && !book.Empty())
    {
      for(rapidjson::SizeType i=0;i<book.Size();i++)
      {
        rapidjson::value& Temp = book[i];         if(Temp.IsObject())
        {
          if(Temp.HasMember("name"))
            string strName = Temp["name"].GetString();
          if(Temp.HasMember("isbn"))
            int nValue = Temp["isbn"].getInt();
        }
      }
    }
  }   if(doc.HasMember("healthy")
  {
    if(doc["healthy"}.GetBool())
    {
      
    }
  }
}
3、生成json字符串
string str = "{"name":"qfl","age":20,"letter":["a","b","c"],"location":{"province":"fujian","city":"xiamen","number":16},"book":[{"name":"book1","isbn":"123"},{"name":"book2","isbn":"456"}],"healthy":true}";

rapidjson::Document doc;
doc.SetObject();
rapidjson::Document::AllocatorType& allocator = doc.GetAllocator(); rapidjson::Value name("qfl",allocator);
doc.AddMember("name",name,allocator);
doc.AddMember("age",20,allocator);
rapidjson::Value letter(rapidjson::kArrayType);

rapidjson::Value letter_1("a",allocator);
rapidjson::Value letter_2("b",allocator);
rapidjson::Value letter_3("c",allocator);
letter.PushBack(letter_1,allocator);
letter.PuhBack(letter_2,allocator);
letter.PushBack(letter_3,allocator);
doc.AddMember("letter",letter,allocator);

rapidjson::Value location(rapidjson::kObjectType);
rapidjson::Value province("fujian",allocator);
rapidjson::Value city("xiamen",allocator); location.AddMember("province",province,allocator);
location.AddMember("city",city,allocator);
location.AddMember("number",16,allocator); rapidjson::Value book(rapidjson::kArrayType);
rapidjson::Value object_1(rapidjson::kObjectType);
rapidjson::Value bname1("book1",allocator);
rapidjson::Value bisbn1("123",allocator); object_1.AddMember("name",bname1,allocator);
object_1.AddMember("isbn",bisbn1,allocator); book.PushBack(object_1,allocator); rapidjson::Value object_2(rapidjson::kObjectType);
rapidjson::Value bname2("book2",allocator);
rapidjson::Value bisbn2("456",allocator);
object_2.AddMember("name",bname2,allocator);
object_2.AddMember("isbn",bisbn2,allocator); book.PushBack(object_2,allocator);
book.AddMember("book",book,allocator);
doc.AddMember("healthy",true,allocator);
rapidjson::StringBuffer buffer; 
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
doc.Accept(writer);
std::string json = std::string(buffer.GetString());

rapidjson的使用的更多相关文章

  1. RapidJSON v1.1.0 发布简介

    时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...

  2. RapidJSON 代码剖析(四):优化 Grisu

    我曾经在知乎的一个答案里谈及到 V8 引擎里实现了 Grisu 算法,我先引用该文的内容简单介绍 Grisu.然后,再谈及 RapidJSON 对它做了的几个底层优化. (配图中的<Grisù& ...

  3. RapidJSON 代码剖析(三):Unicode 的编码与解码

    根据 RFC-7159: 8.1 Character Encoding JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The defa ...

  4. RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描

    现在的 CPU 都提供了单指令流多数据流(single instruction multiple data, SIMD)指令集.最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面. 其中,S ...

  5. RapidJSON 代码剖析(一):混合任意类型的堆栈

    大家好,这个专栏会分析 RapidJSON (中文使用手册)中一些有趣的 C++ 代码,希望对读者有所裨益. C++ 语法解说 我们先来看一行代码(document.h): bool StartArr ...

  6. RapidJson读取json文档

    Json格式定义如下 Object: { _Name:_Data,... } 最后一项后面没有逗号 Array: [_Data,_Data,...] 最后一项后面没有逗号 _Name: String ...

  7. 这个东西,写C++插件的可以用到。 RapidJSON —— C++ 快速 JSON 解析器和生成器

    点这里 原文: RapidJSON —— C++ 快速 JSON 解析器和生成器 时间 2015-04-05 07:33:33  开源中国新闻原文  http://www.oschina.net/p/ ...

  8. Cocos2d-x移植到WindowsPhone8移植问题-框架rapidjson移植问题

    Cocos2d-x 3.0提供了JSON框架rapidjson可以在Windows Phone 8平台使用,如果没有进行必要的配置,在编译的时候会报错,document.h等头文件找不到的错误.在Wi ...

  9. cocos2d-x3.x使用rapidjson

    rapidjson效率高,所以之前cocostudio里面解析用的jsoncpp也换成了rapidjson. 引擎又带有rapidjson库,所以不用单独去下载,直接就可以用. 这里主要写一下关于解析 ...

  10. cocos2dx 3.2 定义自己使用rapidjson阅读json数据

    一.说明 我在这里得到的只是一个简单的定义string和Int种类,其他数据类型可以被替换向上. 两.头文件 class JsonReadUtils { public: static JsonRead ...

随机推荐

  1. http请求中的中文乱码问题

    通过浏览器访问服务器页面和资源时,不可避免地要传送中文字串,如果客户机与服务器不能用同一码表解析字串,肯定会出现各种各样的乱码问题.我总结了几个乱码场景及解决办法,如下 1.服务器上的中文字串被客户端 ...

  2. docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)

    =============================================== 2018/7/8_第1次修改                       ccb_warlock === ...

  3. 利用mysql的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  4. CentOS/Linux 网卡设置 IP地址配置

    CentOS/Linux下设置IP地址 1:临时修改:1.1:修改IP地址# ifconfig eth0 192.168.100.100 1.2:修改网关地址# route add default g ...

  5. Eclipse 配置语言环境

    一.打开https://www.eclipse.org/babel/downloads.php 选择一下版本的Bable(通天塔) 选择 解压 打开Eclipse 软件 选择Help->inst ...

  6. SQLServer判断指定列的默认值是否存在,并修改默认值

    SQLServer判断指定列的默认值是否存在,并修改默认值 2008年10月21日 星期二 下午 12:08 if exists(select A.name as DefaultName,B.name ...

  7. 算法笔试题整理——升级蓄水池 && 字符串数字表达式计算值 && 求旅游完所有景点需要的最少天数 && 宝箱怪

    1. 小米笔试题——升级蓄水池 题目描述: 在米兔生活的二维世界中,建造蓄水池非常简单. 一个蓄水池可以用n个坐标轴上的非负整数表示,代表区间为[0-n]范围内宽度为1的墙壁的高度. 如下图1,黑色部 ...

  8. python_docx制作word文档

    一.docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就是说python-docx模块会把word文档,文档中的段落.文本.字体等都看做对象,对对象 ...

  9. 1、树莓派3B开箱+安装系统

    说白了,树莓派就是英国人为学生开发的一款微型电脑.电脑能干什么,那就多了.英国小学生有用树莓派做气象站的,有检测家长开门回家的(可以安心玩游戏了),总之脑洞有多大就可以玩多大. 了解到了之后就一直心水 ...

  10. HTML5元素1

    文档和元数据元素 元素 说明 类型 HTML5与其他的变化 base 设置相对URL的基础 元数据 无变化 body 表示HTML文档的内容 无 有变化 DOCTYPE 表示HTML文档的开始 无 有 ...