rapidjson 使用教程
在cocos2d-x引入了rapidjson,它处理速度比其他的json库快,反正不管了,我们这边只是学习下如何使用。rapidjson官方网址: https://code.google.com/p/rapidjson/wiki/UserGuide,上面有wiki有部分说明文档,可以看下。
github仓库地址:https://github.com/miloyip/rapidjson
下面我们讲讲rapidjson读写文件。
直接贴代码:
TestJson.h
#ifndef _TEST_JSON_H_
#define _TEST_JSON_H_ #include "json/document.h"
using namespace std;
class TestJson
{
public:
TestJson(void);
~TestJson(void);
//读取文件
void readFile( const char * fileName );
//添加字符串成员
void addStrMenber(const char *key,const char *value);
//是否存在成员
bool hasMenber(const char *key);
//删除成员
void removeMenber(const char *key);
//写入文件
bool writeFile( const char * fileName ); private:
rapidjson::Document _jsonDocument;
};
#endif
TestJson.cpp
#include "TestJson.h"
#include <stdio.h>
#include "json/filestream.h"
#include "json/stringbuffer.h"
#include "json/writer.h"
TestJson::TestJson(void)
{
} TestJson::~TestJson(void)
{
} void TestJson::readFile( const char * fileName )
{
if (fileName == nullptr) return;
FILE * pFile = fopen (fileName , "r");
if(pFile){
//读取文件进行解析成json
rapidjson::FileStream inputStream(pFile);
_jsonDocument.ParseStream<>(inputStream);
fclose(pFile);
}
if(!_jsonDocument.IsObject()){
_jsonDocument.SetObject();
}
} void TestJson::addStrMenber(const char *key,const char *value)
{
rapidjson::Value strValue(rapidjson::kStringType);
strValue.SetString(value,_jsonDocument.GetAllocator());
_jsonDocument.AddMember(key,strValue,_jsonDocument.GetAllocator());
} bool TestJson::hasMenber(const char *key)
{
if (_jsonDocument.HasMember(key)) {
return true;
}
return false;
} void TestJson::removeMenber(const char *key)
{
if (_jsonDocument.HasMember(key)) {
_jsonDocument.RemoveMember(key);
}
} bool TestJson::writeFile( const char * fileName )
{
if (fileName == nullptr) return false;
//转为字符串格式
rapidjson::StringBuffer buffer;
rapidjson::Writer< rapidjson::StringBuffer > writer(buffer);
_jsonDocument.Accept(writer);
const char* str = buffer.GetString();
FILE * pFile = fopen (fileName , "w");
if (!pFile) return false;
fwrite(str,sizeof(char),strlen(str),pFile);
fclose(pFile);
return true;
}
rapidjson 使用教程的更多相关文章
- rapidjson使用总结
Reference: https://blog.csdn.net/elloop/article/details/49908689 rapidjson简介 rapidjson是腾讯的开源json解析框 ...
- Rapidjson的简单使用示例
很早就想用用Markdown了,一直没机会.今天就来试一下 先放个目录: Rapidjson的简单使用示例 rapidjson官方教程 本示例所用环境 示例代码与注释 rapidjson官方教程 如果 ...
- RapidJSON v1.1.0 发布简介
时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...
- RapidJSON 1.0 正式版发布,C++的JSON开发包
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...
- Navicat 激活教程2021(Linux)
Navicat 激活教程2021(Linux) 目录 背景 环境 激活 清理 使用 背景 Navicat 是香港卓软数字科技有限公司生产的一系列 MySQL.MariaDB.MongoDB.Oracl ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
随机推荐
- jquery 仿购物车的加减数量
<p>单价:3.95</p> <input id="min" name="" type="button" va ...
- ReactiveCocoa的冷信号与热信号 探讨
背景 ReactiveCocoa(简称RAC)是最初由GitHub团队开发的一套基于Cocoa的FRP框架.FRP即Functional Reactive Programming(函数式响应式编程), ...
- 源代码管理工具-GIT
源代码管理工具-GIT ---- 一. 掌握 - git 概述 1. git 简介? 什么是git? git是一款开源的分布式版本控制工具在世界上所有的分布式版本控制工具中,git是最快.最简单.最流 ...
- ormlite 删除操作
ormlite删除操作 DeleteBuilder<TransferDetailDtl, Integer> deleteBuilder = mRawDao.deleteBuilder(); ...
- 删除正在登录的SQL账号
exec sp_who '用户名' kill @spid sp_droplogin 用户名
- Windows恢复Grub引导,用grub安装ubuntu
http://www.linuxidc.com/wap.aspx?nid=18027&p=&cp=&cid=http://m.blog.chinaunix.net/uid-22 ...
- eclipse myeclipse修改工作区间 an error has occurred. see error log for more details. java.lang.nullpointerexception 问题解决
解决办法:修改项目工作空间. 修改工作空间,以前打开myEclipse时知道怎么改!现在只有找配置文件了! 步骤: MyEclipse 5.1.1 GA----->Eclipse-----> ...
- 为图片存储而作——记一次UEditor源码的修改
本文版权归博客园和作者吴双本人共同所有. 写在前面 这是一个数据爆发的网络时代,大家习惯于浏览图文直观带给我们的快速信息.大图片的存储和浏览经常会成为Web服务器的瓶颈.试想如果你的Web服务器依然 ...
- jenkins邮件设置
不要忘记上面的系统管理员的邮箱也要先填好.
- hrbustoj 2283 heap解题报告
这是我们校赛的一道题,给一个字符串,判断这是字符串描绘的是不是一个堆,并不难,只是一个简单的模拟,但是也稍微有点麻烦,最起码我的方法代码量比较大,主要用栈做一个父亲与儿子的位置匹配,匹配的方法应该有很 ...