zoukankan      html  css  js  c++  java
  • 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;
    }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    快速开始Python/WSGI应用程序
    git clone 指定的单个目录或文件夹
    django-1-应用开发基本套路
    raid管理
    Linux下利用script命令录制并回放终端会话
    Mysqldump参数大全
    在crontab中执行脚本重要事项
    IDEA 不能搜索插件解决方案之一
    将页面整体显示为灰色的 CSS
    Linux CentOS7.5静默安装Oracle11gR2
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4884790.html
Copyright © 2011-2022 走看看