一、说明

我在这里得到的只是一个简单的定义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数据的更多相关文章

  1. cocos2d-x把json数据解析到数组或字典中(libjson库)

    以前在cocos2d-x项目中用到json解析,集成了libjson库后发现网上提供的解析方法大多是在解析过程中取得值,并没有将解析结果有效的保存起来,于是摸索一番,把解析结果根据数据格式存到数组或字 ...

  2. JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{&quot;options&quot;:&quot;[{

    JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options&q ...

  3. 调试接口,返回的json数据,我定义了一个类,用来序列化,其中有一个字段定义为string 然后序列化的时候报错

    调试接口,返回的json数据,我定义了一个类,用来序列化,其中有一个字段定义为string 然后序列化的时候报错 在需要解析的类型类上加上声明 eg:

  4. Cocos2d-x -自己定义动作 圆周运动

    原文地址:http://blog.csdn.net/u012945598/article/details/17605409 在之前的文章中我们以前讲过Cocos2d-x中的各种动作的用法,我们先来简单 ...

  5. cocos2dx CCLabelTTF自己定义字体的使用

    版本号:  cocos2d-x 2.1.4 平台:  iOS 1. 字体文件名称 最好用字体冊中的family name.ttf, 不然字体可能不生效. 2. 在Info.plist  Fonts P ...

  6. 关于Cocos2d-x中自己定义的类的名字和Cocos2d-x引擎库中的类的名字重复的解决方法

    方法一: 修改自己定义的类的名字,VS2013中可以用Ctrl+H来替换某个特定的单词,Ctrl+F是用来查询某个单词所在的位置或者有没有存在. 方法二: 1.给自己定义的类的.h和.cpp文件的整体 ...

  7. 关于Cocos2d-x对象的定义和创建

    游戏可以包含很多个场景,每个场景又包含很多的层,每个层又包含很多的节点,这些节点,层,场景都可以看成一个一个的对象,我们把每一个彼此不同但又是同类型的对象归为一个类,为它创建一个单独的类,这个类有这些 ...

  8. Cocos2d-x 创建自己定义项目模板

    你是否以前为cocos方便高速开发而兴奋,你是否以前为各种工具的便利开发而感动,但如今的你是否为每次创建一个新的项目都是HelloWorldScene而苦恼? 好吧,事实上我也感觉到了,每次创建一个项 ...

  9. RapidJson读取json文档

    Json格式定义如下 Object: { _Name:_Data,... } 最后一项后面没有逗号 Array: [_Data,_Data,...] 最后一项后面没有逗号 _Name: String ...

随机推荐

  1. spring中bean的设计模式

    默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." singleton="false" ...

  2. ThinkPHP框架视图详细介绍 View 视图--模板(九)

    原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...

  3. js技术要点---JS 获取网页源代码

    JS 获取网页源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html& ...

  4. 猎豹移动(金山网络)2015校园招聘(c++project师)

    1.已知类MyString的原型为: class MyString { public: MyString(const char *str=NULL);//普通构造函数 MyString(const M ...

  5. 自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第三篇.我尽量每周四篇 MIPS指令集架构自上世纪80年代出现后.一直在进行着更新换代,从最初的MIPS I到MIPS V,发 ...

  6. KFC - About KFC - Quality Assurance

    KFC - About KFC - Quality Assurance Restaurant Quality The main attributes for KFC restaurant excell ...

  7. Extjs4 RowEditing 的使用和更新方法

    如何灵活快速的掌握RowEditing组件的应用,应大家的要求,今天给大家具体讲下该组件的使用. 1.创建 var rowEditing = Ext.create('Ext.grid.plugin.R ...

  8. 单例模式 - 程序实现(Java)

    我们知道单例模式,其实就是返回一个被调用类的实例. 在频繁的进行实例(Instance)创建过程,难免过多的进行new InstanceName():我们可以只通过调用一个方法解决. 在进行设计模式的 ...

  9. NGUI使用教程(3) 使用外部图片制作Atlas(图集)

    在实际操作之前有几个概念先弄清一下 Atlas:图集,把美术给你提供的素材,用 NGUI 的 Atlas Maker 工具.合成一张图片(准确的说,还同一时候生成了prefab.mat ). Spri ...

  10. httl开源JAVA模板引擎,动态HTML页面输出

    HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity. ...