一、说明

我在这里得到的只是一个简单的定义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. Java Thread.join()详解(转)

    (1)join方法是可以中断的(2)在线程joiner在另一个线程t上调用t.join(),线程joiner将被挂起,直到线程t结束(即t.isAlive()返回为false)才恢复 package ...

  2. 小猪的Android入门之路 day 1

    小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显 ...

  3. csdn android视频播放器开发

    http://blog.csdn.net/column/details/myvideo.html

  4. Visual Assist X 10.8.2052的Crack破解补丁. 2014.11.05 (General release.)

    VA小组立即更新频率似有些放缓几乎,版本号都是2个月才更新一次,而这次的更新幅度也还是比較大的,新增了6个特性,而且修正和20余处大大小小的问题,而且也是正式发行版,推荐更新. 对于破解补丁还是老规矩 ...

  5. hdu4289(最小割)

    传送门:Control 题意:有n个城市,有个小偷想从其中一个城市逃到另一个城市,警察想要堵截这个小偷,知道了在每个城市堵截的成本,问如何安排在哪些城市堵截可以使得小偷一定会被抓住,而且成本最低. 分 ...

  6. poj 2201 构造

    这个题目的构造方法应该还算是很好想的,先给a按照从小到大排序,然后按顺序插入数据,构造一棵二叉查找树,而且50000的数据,nlogn的做法,应该还是很好的.不过这个题目的编码比想象中要麻烦一点,并且 ...

  7. 【剑指offer】面试题24:二叉搜索树的兴许前序遍历序列

    分析: 前序: 根 左 右 后序: 左 由 根 二叉搜索树: 左 < 根 < 右 那么这就非常明显了. def ifpost(postArray, start, end): #one or ...

  8. cocos2d-x 贝塞尔曲线的简单运用(CCBezierTo,CCBezierBy)

    原文链接:http://blog.csdn.net/we000636/article/details/8616355 一.贝赛尔曲线简单介绍 贝塞尔曲线是应用于二维图形应用程序的数学曲线.曲线的定义有 ...

  9. WebKit爬虫

    https://github.com/emyller/webkitcrawler 一个开源的项目,可以快速入门. http://spiderformysql.com/ http://crawl.gro ...

  10. 2012Android开发热门资料(110个)

    下载中心完整附件下载地址:http://down.51cto.com/data/412494 附件内容部分预览: 专题推荐: Android控:平板电脑HD精品游戏软件合集(共32个) http:// ...