cocos2dx 读取json及解析

来源:互联网 发布:mcgs组态软件视频教程 编辑:程序博客网 时间:2024/06/04 17:31

文章转载自:http://blog.csdn.net/cloud95/article/details/27643917

ball.json 数据如下:

{    "entities": [        {            "entity": {                "TapOpposite": 0,                 "Interval": 0.95,                 "BallNum": 1            }        },         {            "entity": {                "TapOpposite": 0,                 "Interval": 0.91,                 "BallNum": 2            }        },         {            "entity": {                "TapOpposite": 0,                 "Interval": 0.95,                 "BallNum": 3            }        }    ]}

在cocos2dx中json的读取是用的rapidjson,包含在cocostudio工程中。所以我们要先引入#include "cocostudio/CocoStudio.h"

void GameWorld::readJson(){//json 文档rapidjson::Document _doc;bool bRet = false;ssize_t size = 0;unsigned char *pBytes = NULL;do {pBytes = cocos2d::CCFileUtils::sharedFileUtils()->getFileData("ball.json", "r", &size);CC_BREAK_IF(pBytes == NULL || strcmp((char*)pBytes, "") == 0);std::string load_str((const char*)pBytes, size);CC_SAFE_DELETE_ARRAY(pBytes);_doc.Parse<0>(load_str.c_str());CC_BREAK_IF(_doc.HasParseError());//生成json文档对像if(!_doc.IsObject())return;//是否有此成员if(!_doc.HasMember("entities"))return;// 通过[]取成员值,再根据需要转为array,int,double,stringconst rapidjson::Value &pArray = _doc["entities"];//是否是数组if(!pArray.IsArray())return;for (rapidjson::SizeType i = 0; i < pArray.Size(); i++){const rapidjson::Value &p = pArray[i];if(p.HasMember("entity")){const rapidjson::Value &valueEnt = p["entity"];if(valueEnt.HasMember("TapOpposite") && valueEnt.HasMember("Interval") && valueEnt.HasMember("BallNum")){const rapidjson::Value &tapOpposite = valueEnt["TapOpposite"];int tapOp = tapOpposite.GetInt();      //得到int值const rapidjson::Value &interval = valueEnt["Interval"];float inter = interval.GetDouble();  //得到float,double值const rapidjson::Value &ballNum = valueEnt["BallNum"];int ball = ballNum.GetInt();      //得到int值ballParam param;param.tapOp = tapOp;param.inter = inter;param.ballIndex = ball;m_ballParamVec.push_back(param);}}else{return;}}bRet = true;} while (0);}


0 0
原创粉丝点击