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. JavaScript新手学习笔记(一)

    1.JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getE ...

  2. RabbitMQ--Publish/Subscribe(三)

    前言 在先前例子中我们创建了一个work queue,封装一个task到一个message中并发送到queue.一个worker(consumer)取出任务并执行. 像这种producer把messa ...

  3. 31 Godoc: documenting Go code 编写良好的文档关于godoc

    Godoc: documenting Go code  编写良好的文档关于godoc 31 March 2011 The Go project takes documentation seriousl ...

  4. 17 Go Slices: usage and internals GO语言切片: 使用和内部

    Go Slices: usage and internals  GO语言切片: 使用和内部 5 January 2011 Introduction Go's slice type provides a ...

  5. webpack3学习笔记

    地址:https://segmentfault.com/a/1190000006843916 地址:https://www.chungold.com/my/course/32 地址:http://js ...

  6. js中的事件委托或是事件代理

    JavaScript(jQuery)中的事件委托 https://www.cnblogs.com/zhoushengxiu/p/5703095.html js中的事件委托或是事件代理详解 https: ...

  7. HDU 5115 Dire Wolf (区间DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目大意:有一些狼,从左到右排列,每只狼有一个伤害A,还有一个伤害B.杀死一只狼的时候,会受到这 ...

  8. C# POS 小票打印

    网上查了好多资料终于让我捣鼓出来了! public partial class Models_JXC_Sale_actNewSalePage : WebPartBase { public string ...

  9. RabbitMQ介绍及安装部署

    本节内容: RabbitMQ介绍 RabbitMQ运行原理 RabbitMQ重要术语 三种ExchangeType RabbitMQ集群种类 集群基本概念 镜像模式部署集群 一.RabbitMQ介绍 ...

  10. MVC 源码调试

    源码调试,帮助你跟好理解MVC,使你开发跟牛B的程序. 1>在Visual命令行中运行“SN.EXE-Vr*,31BF3856AD364E35” 2. codeplex.com 上面找到,和你当 ...