rapidjson的read和write的sample
头文件
#include "json/document.h"
#include "json/prettywriter.h"
#include "json/stringbuffer.h"
这是生成数组的
void test()
{
string info = "{\"id\":\"1111111\",\"cards\":[0,1,2,3,4,5,6,7,8,9],\"jiaoDiZhu\":\"\"}"; rapidjson::Document doc;
doc.Parse<>(info.c_str()); rapidjson::Value &dataArray = doc["cards"]; if (dataArray.IsArray())
{
for (rapidjson::SizeType i = ; i < dataArray.Size(); i++)
{
const rapidjson::Value& object = dataArray[i]; printf("%d\n",object.GetInt());
}
}
}
void test()
{
//read json
string updateInfo = "{\"UpdateInfo\":[{\"url\":\"aaaa.ipa\",\"platform\":\"ios\"}]}"; rapidjson::Document doc;
doc.Parse<>(updateInfo.c_str()); rapidjson::Value &dataArray = doc["UpdateInfo"]; if (dataArray.IsArray())
{
for (int i = ; i < dataArray.Size(); i++)
{
const rapidjson::Value& object = dataArray[i]; string url = object["url"].GetString();
string platform = object["platform"].GetString();
}
} //write json
rapidjson::Document document;
document.SetObject();
rapidjson::Document::AllocatorType& allocator = document.GetAllocator(); rapidjson::Value array(rapidjson::kArrayType); for (int i = ; i < ; i++)
{
rapidjson::Value object(rapidjson::kObjectType);
object.AddMember("id", , allocator);
object.AddMember("name", "test", allocator);
object.AddMember("version", 1.01, allocator);
object.AddMember("vip", true, allocator);
object.SetInt(i);
array.PushBack(object, allocator);
} document.AddMember("title", "PLAYER INFO", allocator);
document.AddMember("players", array, allocator); rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
document.Accept(writer);
auto out = buffer.GetString();
log("out: %s", out);
}
下面是单个的
void readTest()
{
char json[] = "{\"carriorName\":\"日本电信\",\"deviceName\":\"iPhone5,2\",\"osName\":\"android\",\"osVersion\":\"8.1\",\"appId\":\"com.mmcshadow.doudizhu\",\"versionName\":\"1.0\",\"versionCode\":\"1.0\",\"deviceId\":\"11111111\"}";
rapidjson::Document d;
d.Parse<>(json);
printf("%s\n", d["carriorName"].GetString());
printf("%s\n", json);
}
void writeTest()
{
rapidjson::Document document;
rapidjson::Document::AllocatorType& allocator = document.GetAllocator();
rapidjson::Value root(rapidjson::kObjectType);
root.AddMember("name", "哥伦布啊", allocator);
root.AddMember("gold",,allocator);
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
root.Accept(writer);
std::string reststring = buffer.GetString();
std::cout << reststring << std::endl;
}
rapidjson的read和write的sample的更多相关文章
- RapidJSON v1.1.0 发布简介
时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...
- RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描
现在的 CPU 都提供了单指令流多数据流(single instruction multiple data, SIMD)指令集.最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面. 其中,S ...
- Linux下UPnP sample分析
一.UPnP简介 UPnP(Universal Plug and Play)技术是一种屏蔽各种数字设备的硬件和操作系统的通信协议.它是一种数字网络中间件技术,建立在TCP/IP.HTTP协 ...
- cocos2d-x for android配置 & 运行 Sample on Linux OS
1.从http://www.cocos2d-x.org/download下载稳定版 比如cocos2d-x-2.2 2.解压cocos2d-x-2.2.zip,比如本文将其解压到 /opt 目录下 3 ...
- android studio2.2 的Find Sample Code点击没有反应
1 . 出现的问题描述: 右键点击Find Sample Code后半天没有反应,然后提示 Samples are currently unavailable for :{**** ...
- jmeter(四)Sample之http请求
启动jmeter,建立一个测试计划 这里再次说说怎么安装和启动jmeter吧,昨天下午又被人问到怎样安装和使用,我也是醉了:在我看来,百度能解决百分之八十的问题,特别是基础的问题... 安装:去官网下 ...
- RapidJSON 代码剖析(四):优化 Grisu
我曾经在知乎的一个答案里谈及到 V8 引擎里实现了 Grisu 算法,我先引用该文的内容简单介绍 Grisu.然后,再谈及 RapidJSON 对它做了的几个底层优化. (配图中的<Grisù& ...
- RapidJSON 代码剖析(三):Unicode 的编码与解码
根据 RFC-7159: 8.1 Character Encoding JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The defa ...
- RapidJSON 代码剖析(一):混合任意类型的堆栈
大家好,这个专栏会分析 RapidJSON (中文使用手册)中一些有趣的 C++ 代码,希望对读者有所裨益. C++ 语法解说 我们先来看一行代码(document.h): bool StartArr ...
随机推荐
- day6-面向对象补充篇--类的特殊成员
先说明一下,今天的内容主要转自师兄张其高的博客http://www.cnblogs.com/zhangqigao/articles/6935221.html 前面我们讲了类的方法,有普通方法,就是我们 ...
- 部署C# ReportViewer遇到的坑
前些天临时给客户做个工具,统计具体时间点各种车型数据的数量及比重,为了显示方便就用C#来做,因为它有现成的reportviwer控件提供了显示,打印,导出功能.原本我以为这个控件是.netframew ...
- hdu4685
题解: 二分图匹配 对于每一个单身狗 见一个虚拟的人 然后就可以做了 代码: #include<cstdio> #include<cstring> #include<al ...
- va_start、va_arg、va_end、va_copy 可变参函数
1.应用与原理 在C语言中,有时我们无法给出一个函数参数的列表,比如: int printf(const char *format, ...); int fprintf(FILE *s ...
- 使用 create-react-app 构建 react应用程序
原文 http://blog.csdn.net/github_squad/article/details/57452333#
- C# 给窗体添加皮肤 - SkinEngine的应用
C# 给窗体添加皮肤 - SkinEngine的应用 C#中利用 IrisSkin2.dll 所提供的控件 SkinEngine 来为窗体添加皮肤.这种方法最简单 具体步骤: .添加控件SkinE ...
- three.js入门——先跑个旋转的正方体
WebGl中文网看了几篇教程,又百度了几篇文章,顿时感觉手痒,打开编辑器,写个demo玩玩. demo是写在vue项目中的,所以首先: npm install three --save; npm in ...
- vue 之 vue-router
官方文档 // 0. 如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter) // 1. 定义(路由)组件. // 可以从其他文件 import 进来 c ...
- 【剑指offer】二叉树中和为某一值的路径,C++实现
原创文章,转载请注明出处! 博客文章索引地址 1.题目 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径由结点和有向边组成,从根结点到叶节点. // 二叉树结点的定义 st ...
- laravel 中禁用掉注册功能
想让 laravel 做单用户登录,禁止掉注册功能 在 RegisterController 添加以下方法 public function showRegistrationForm() { retur ...