I. Description
Here I simply define the get string and int types, and the other alternative data types are all right.
Second, the head file
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 ();p rivate:~jsonreadutils (void);};
Third, the source file
#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::D Ocument _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::D ocument _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::D ocument _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 ::D ocument _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::D ocument _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 Customizing reading JSON data with Rapidjson