一、说明

我在这里得到的只是一个简单的定义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. php中实现快排与冒泡排序

    快排 <?php function quicksort($str){ if(count($str)<=1) return $str;//如果个数不大于一,直接返回 $key=$str[0] ...

  2. [Android学习笔记]PopupWindow的使用

    什么时候使用PopupWindow? 当业务需求的交互形式需要在当前页弹出一个简单可选项UI与用户进行交互时,可使用PopupWindow完成此功能开发 Android Dev API Doc Pop ...

  3. [Android]mac下开发环境搭建

    好像没神马好些的? 1.下载adt-bundle-mac-x86_64bit(http://developer.android.com/sdk/installing/bundle.html) 2.解压 ...

  4. OCA读书笔记(12) - 数据库维护

    查询优化器统计信息 搜集统计信息: 不是实时的: SQL> conn /as sysdbaConnected.SQL> grant select on dba_objects to sco ...

  5. operation is executing and cannot be enqueued

    http://d2100.com/questions/29022 作为依赖关系的另一个 NSOperation 添加时不调用 NSOperation dealloc 使用文书我看到很多我自定义的 NS ...

  6. POJ3313 【随便写了个spfa就一A了,嗨皮】

    我顺便明白了....英文题意理解其实好大一部分还是靠感觉,然后自己猜题意,试题意. 你要是纠结于英文你就跪了. #include <iostream> #include <cstdi ...

  7. Xah Lee Web 李杀网

    Xah Lee Web 李杀网 ∑ Xah Lee Web 李杀网

  8. SQL Server Database 维护计划创建一个完整的备份策略

     SQL Server维护计划Maintenance Plan这是一个非常有用的维护工具,能够完成大部分的数据库维护任务,通过这些功能包.您可以省略大量的编码时间. 介绍的不是非常多,特此补上一篇 ...

  9. hdu3006(状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3006 题意:给定一些集合,求这些集合所能组合的集合个数. 分析:这题就是用一个二进制数保存一个集合的元 ...

  10. 浅谈SQL之主键、外键约束

    约束:顾名思义就是一种限制,在表或列的层次设置约束,确保数据的有效性和完整性. SQL server中约束的主要分类: UNIQUE约束(唯一性约束) 防止一个特定的列中两个记录具有相同的值.可设置多 ...