cocos2dx 3.2 定义自己使用rapidjson阅读json数据
一、说明
我在这里得到的只是一个简单的定义string和Int种类,其他数据类型可以被替换向上。
两、头文件
class JsonReadUtils
{
public:
static JsonReadUtils* getInstance();
const std::string getStringFromeFile(const std::string &fileName);
const std::string getStringFromeJson(const std::string jsonStr,const std::string key);
const std::string getStringFromeJson(const std::string jsonStr,const std::string key1,const std::string key2);
int getIntFromeJson(const std::string jsonStr,const std::string key);
int getIntFromeJson(const std::string jsonStr,const std::string key1,const std::string key2);
unsigned getSizeFromeJsonArr(const std::string jsonArr);
JsonReadUtils();
private: ~JsonReadUtils(void);
};
三、源文件
#include "JsonUtils.h" #define RETURN_IF(cond,p) if((cond)) return (p) static JsonReadUtils* mUtils = nullptr;
JsonReadUtils::JsonReadUtils()
{ } JsonReadUtils::~JsonReadUtils(void)
{
CC_SAFE_DELETE(mUtils);
} JsonReadUtils* JsonReadUtils::getInstance()
{
if (NULL==mUtils)
{
mUtils = new JsonReadUtils();
}
return mUtils;
} const std::string JsonReadUtils::getStringFromeFile( const std::string &fileName)
{
const std::string mstr = cocos2d::FileUtils::getInstance()->getStringFromFile(fileName);
return mstr;
}
const std::string JsonReadUtils::getStringFromeJson( const std::string jsonStr,const std::string key )
{
rapidjson::Document _mDoc;
std::string mstr = jsonStr; RETURN_IF(NULL==mstr.c_str()||!mstr.compare(""),"");
_mDoc.Parse<rapidjson::kParseDefaultFlags>(mstr.c_str());
RETURN_IF(_mDoc.HasParseError()||!_mDoc.IsObject()||!_mDoc.HasMember(key.c_str()),"");
const rapidjson::Value &pArr = _mDoc[key.c_str()];
RETURN_IF(!pArr.IsString(),"");
const std::string mm = pArr.GetString();
return mm;
} const std::string JsonReadUtils::getStringFromeJson( const std::string jsonStr,const std::string key1,const std::string key2 )
{
rapidjson::Document _mDoc;
std::string mstr = jsonStr;
RETURN_IF(NULL==mstr.c_str()||!mstr.compare(""),"");
_mDoc.Parse<rapidjson::kParseDefaultFlags>(mstr.c_str());
RETURN_IF(_mDoc.HasParseError()||!_mDoc.IsObject()||!_mDoc.HasMember(key1.c_str()),"");
const rapidjson::Value &pArr = _mDoc[key1.c_str()];
RETURN_IF(!pArr.IsObject(),"");
const rapidjson::Value &p = pArr[key2.c_str()];
RETURN_IF(!p.IsString(),"");
const std::string vvv =p.GetString();
return vvv;
} int JsonReadUtils::getIntFromeJson( const std::string jsonStr,const std::string key )
{
rapidjson::Document _mDoc;
std::string mstr = jsonStr;
RETURN_IF(NULL==mstr.c_str()||!mstr.compare(""),NULL);
_mDoc.Parse<rapidjson::kParseDefaultFlags>(mstr.c_str());
RETURN_IF(_mDoc.HasParseError()||!_mDoc.IsObject()||!_mDoc.HasMember(key.c_str()),NULL);
const rapidjson::Value &pArr = _mDoc[key.c_str()];
RETURN_IF(!pArr.IsInt(),NULL);
int mm = pArr.GetInt();
return mm;
} int JsonReadUtils::getIntFromeJson( const std::string jsonStr,const std::string key1,const std::string key2 )
{
rapidjson::Document _mDoc;
std::string mstr = jsonStr;
RETURN_IF(NULL==mstr.c_str()||!mstr.compare(""),NULL);
_mDoc.Parse<rapidjson::kParseDefaultFlags>(mstr.c_str());
RETURN_IF(_mDoc.HasParseError()||!_mDoc.IsObject()||!_mDoc.HasMember(key1.c_str()),NULL);
const rapidjson::Value &pArr = _mDoc[key1.c_str()];
RETURN_IF(!pArr.IsObject(),NULL);
const rapidjson::Value &p = pArr[key2.c_str()];
RETURN_IF(!p.IsInt(),NULL);
int vvv =p.GetInt();
return vvv;
} unsigned JsonReadUtils::getSizeFromeJsonArr( const std::string jsonArr )
{
rapidjson::Document _mDoc;
std::string mstr = jsonArr; RETURN_IF(NULL==mstr.c_str()||!mstr.compare(""),NULL);
_mDoc.Parse<rapidjson::kParseDefaultFlags>(mstr.c_str());
RETURN_IF(_mDoc.HasParseError()||!_mDoc.IsObject(),NULL);
const rapidjson::Value &mValue = _mDoc;
RETURN_IF(!mValue.IsArray(),NULL);
unsigned count = 0;
unsigned mm = mValue.Capacity();
return mm;
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
cocos2dx 3.2 定义自己使用rapidjson阅读json数据的更多相关文章
- cocos2d-x把json数据解析到数组或字典中(libjson库)
以前在cocos2d-x项目中用到json解析,集成了libjson库后发现网上提供的解析方法大多是在解析过程中取得值,并没有将解析结果有效的保存起来,于是摸索一番,把解析结果根据数据格式存到数组或字 ...
- JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options":"[{
JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options&q ...
- 调试接口,返回的json数据,我定义了一个类,用来序列化,其中有一个字段定义为string 然后序列化的时候报错
调试接口,返回的json数据,我定义了一个类,用来序列化,其中有一个字段定义为string 然后序列化的时候报错 在需要解析的类型类上加上声明 eg:
- Cocos2d-x -自己定义动作 圆周运动
原文地址:http://blog.csdn.net/u012945598/article/details/17605409 在之前的文章中我们以前讲过Cocos2d-x中的各种动作的用法,我们先来简单 ...
- cocos2dx CCLabelTTF自己定义字体的使用
版本号: cocos2d-x 2.1.4 平台: iOS 1. 字体文件名称 最好用字体冊中的family name.ttf, 不然字体可能不生效. 2. 在Info.plist Fonts P ...
- 关于Cocos2d-x中自己定义的类的名字和Cocos2d-x引擎库中的类的名字重复的解决方法
方法一: 修改自己定义的类的名字,VS2013中可以用Ctrl+H来替换某个特定的单词,Ctrl+F是用来查询某个单词所在的位置或者有没有存在. 方法二: 1.给自己定义的类的.h和.cpp文件的整体 ...
- 关于Cocos2d-x对象的定义和创建
游戏可以包含很多个场景,每个场景又包含很多的层,每个层又包含很多的节点,这些节点,层,场景都可以看成一个一个的对象,我们把每一个彼此不同但又是同类型的对象归为一个类,为它创建一个单独的类,这个类有这些 ...
- Cocos2d-x 创建自己定义项目模板
你是否以前为cocos方便高速开发而兴奋,你是否以前为各种工具的便利开发而感动,但如今的你是否为每次创建一个新的项目都是HelloWorldScene而苦恼? 好吧,事实上我也感觉到了,每次创建一个项 ...
- RapidJson读取json文档
Json格式定义如下 Object: { _Name:_Data,... } 最后一项后面没有逗号 Array: [_Data,_Data,...] 最后一项后面没有逗号 _Name: String ...
随机推荐
- SQL视图索引
视图: 视图就相当于一个查询结果,它相对应的是表 表----真正存储数据的地方 视图---不存储数据,展示查询的结果 注意: 1.视图就是为了查询数据方便.一般不要试图向视图中插入数据,容易出错. 2 ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- 谈论高并发(三十)解析java.util.concurrent各种组件(十二) 认识CyclicBarrier栅栏
这次谈话CyclicBarrier栅栏,如可以从它的名字可以看出,它是可重复使用. 它的功能和CountDownLatch类别似,也让一组线程等待,然后开始往下跑起来.但也有在两者之间有一些差别 1. ...
- [置顶] 如何在Python IDLE中调试Python代码?
好久没有用Python了,居然忘记了怎么在Python IDLE中调试Python代码.百度了一下,然后还是写下来吧,以免以后又忘记了. 1. Set break point in the sourc ...
- Linux Shell脚本编程--curl命令详解
用途说明 curl命令是一个功能强大的网络工具,它能够通过http.ftp等方式下载文件,也能够上传文件.其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息.类 ...
- poj3207(two-sat)
传送门:Ikki's Story IV - Panda's Trick 题意:给定一个圆,圆上一些点.两点一线.现给出一些线,这些线可以在圆内连起来,也可以在圆外.问有没有可能所有的线画完且不出现相交 ...
- Codeforces 432D Prefixes and Suffixes(KMP+dp)
题目连接:Codeforces 432D Prefixes and Suffixes 题目大意:给出一个字符串,求全部既是前缀串又是后缀串的字符串出现了几次. 解题思路:依据性质能够依据KMP算法求出 ...
- hdu1292(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1292 分析: i代表人数,j代表组数,有dp[i][j]=dp[i-1][j-1]+dp[i-1 ...
- cocos2dx的模板容器简单使用(Vector,Map,Value)
在cocos2dxv3.0beta之前存在顺序性容器cocos2d::CCArray,和cocos2d::CCDictionary.可是在新版本号之后这两个容器都将被cocos2d::Vector&l ...
- MBR格式无法识别2T以上的硬盘的问题
早上有人打电话说四块2T的sata 硬盘做了raid 5之后安装window server 2012的时候,无法创建分区,安装完系统后无法给剩余的硬盘创建分区,刚开始的时候我还以为是别人分区的数量问题 ...