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中提供了依赖注入的概念,使得 ...
随机推荐
- hdu5269 ZYB loves Xor I
分治法和字典树都可以,都是递归,但字典树耗内存 从第一bit开始,若相同则xor为0,分到同一部分,不相同则统计,且此时lowbit为这一bit,最后结果要乘以2 /*分治法*/ #include&l ...
- merge 语句的语法
/*Merge into 详细介绍 MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句. 通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, 连接条 ...
- 初识Selenium(二)
---------------------------------------------------------------------------------------------------- ...
- 使用Theos做一个简单的Mobile Substrate Tweak
01 January 2014 Mobile Substrate和Theos Mobile Substrate是Cydia的作者Jay Freeman (@saurik)的另外一个牛X的作品,也叫Cy ...
- 记一次坑die(误)的题目--HDU2553--(DFS)
,N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- Python -- OOP高级 -- 枚举类
Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较. from enum import Enum Month = Enum('Month', ('Jan', ' ...
- EF5修改edmx表结构保存后不自动更新tt (转)
http://blog.csdn.net/panderman/article/details/8172968 不知道这算不算一个bug,当你新建一个从数据库生成的edmx时,他能正确的生成所有的tt文 ...
- 未能加载文件或程序集 Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0 解决 亲测
项目打开winform程序做的某些窗体时报错: ************* 异常文本 ************** System.Reflection.TargetInvocationExceptio ...
- HTTP代理浅说
简单的说HTTP代理就是处于HTTP客户端和服务器端之间,中转消息的中间人. 一种代理是代客户端去请求服务器,叫做Forward Proxy正向代理:另一种是代理真正的服务器来接收用户请求,叫做Rev ...
- (转)C++中返回对象的情形及RVO
http://www.cnblogs.com/xkfz007/archive/2012/07/21/2602110.html 之前有文章介绍过临时对象和返回值优化RVO方面的问题.见此处. 在C++中 ...