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 ...
随机推荐
- spring中bean的设计模式
默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." singleton="false" ...
- ThinkPHP框架视图详细介绍 View 视图--模板(九)
原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...
- js技术要点---JS 获取网页源代码
JS 获取网页源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html& ...
- 猎豹移动(金山网络)2015校园招聘(c++project师)
1.已知类MyString的原型为: class MyString { public: MyString(const char *str=NULL);//普通构造函数 MyString(const M ...
- 自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第三篇.我尽量每周四篇 MIPS指令集架构自上世纪80年代出现后.一直在进行着更新换代,从最初的MIPS I到MIPS V,发 ...
- KFC - About KFC - Quality Assurance
KFC - About KFC - Quality Assurance Restaurant Quality The main attributes for KFC restaurant excell ...
- Extjs4 RowEditing 的使用和更新方法
如何灵活快速的掌握RowEditing组件的应用,应大家的要求,今天给大家具体讲下该组件的使用. 1.创建 var rowEditing = Ext.create('Ext.grid.plugin.R ...
- 单例模式 - 程序实现(Java)
我们知道单例模式,其实就是返回一个被调用类的实例. 在频繁的进行实例(Instance)创建过程,难免过多的进行new InstanceName():我们可以只通过调用一个方法解决. 在进行设计模式的 ...
- NGUI使用教程(3) 使用外部图片制作Atlas(图集)
在实际操作之前有几个概念先弄清一下 Atlas:图集,把美术给你提供的素材,用 NGUI 的 Atlas Maker 工具.合成一张图片(准确的说,还同一时候生成了prefab.mat ). Spri ...
- httl开源JAVA模板引擎,动态HTML页面输出
HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity. ...