首页 > 代码库 > cocos2dx 3.2 自定义用rapidjson读取json数据
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 = http://www.mamicode.com/_mDoc;>
cocos2dx 3.2 自定义用rapidjson读取json数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。