
原文地址:http://www.jb51.cc/article/p-rhfkjoll-sg.html
cocos2dx 2.2.x 版本以后,使用rAPIdJson进行数据解析,因为的效率要高写,下面是一个解析事例:
ball.Json 数据如下:
[HTML] view plain copy @H_419_26@{ "entitIEs":[ { "entity":{ "TapOpposite":0, "Interval":0.95, "BallNum":1 } },248); line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> { "entity":{ "TapOpposite":0,108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> "Interval":0.91,248); line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> "BallNum":2 } },108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> "BallNum":3 ] }
在cocos2dx中Json的读取是用的rAPIdJson,包含在libExtensions的CocoStudio的Json下:
所以在使用前我们需要引用命名空间和头文件:
#include "cocos-ext.h"
USING_NS_CC_EXT;
using namespace rAPIdJson;
[cpp] voID@H_419_26@GameWorld::readJson() //Json文档@H_419_26@ rAPIdJson::document_doc; bool@H_419_26@bRet=false@H_419_26@; unsigned longsize=0; unsignedchar@H_419_26@*pBytes=NulL; do@H_419_26@{ pBytes=cocos2d::CCfileUtils::sharedfileUtils()->getfileData("ball.Json"@H_419_26@,"r"@H_419_26@,&size); CC_BREAK_IF(pBytes==NulL||strcmp((char@H_419_26@*)pBytes,""@H_419_26@)==0); std::stringload_str((const@H_419_26@CC_SAFE_DELETE_ARRAY(pBytes); _doc.Parse<0>(load_str.c_str()); CC_BREAK_IF(_doc.HasParseError()); //生成Json文档对像@H_419_26@ if@H_419_26@(!_doc.IsObject()) return@H_419_26@; //是否有此成员@H_419_26@ if@H_419_26@(!_doc.HasMember("entitIEs"@H_419_26@)) //通过[]取成员值,再根据需要转为array,int,double,string@H_419_26@ const@H_419_26@rAPIdJson::Value&pArray=_doc["entitIEs"@H_419_26@]; //是否是数组@H_419_26@ if@H_419_26@(!pArray.IsArray()) return@H_419_26@; for@H_419_26@(rAPIdJson::SizeTypei=0;i<pArray.Size();i++) const@H_419_26@rAPIdJson::Value&p=pArray[i]; if@H_419_26@(p.HasMember("entity"@H_419_26@)) const@H_419_26@rAPIdJson::Value&valueEnt=p["entity"@H_419_26@]; if@H_419_26@(valueEnt.HasMember("TapOpposite"@H_419_26@)&&valueEnt.HasMember("Interval"@H_419_26@)&&valueEnt.HasMember("BallNum"@H_419_26@)) const@H_419_26@rAPIdJson::Value&tapOpposite=valueEnt["TapOpposite"@H_419_26@]; int@H_419_26@tapOp=tapOpposite.GetInt();//得到int值@H_419_26@ const@H_419_26@rAPIdJson::Value&interval=valueEnt["Interval"@H_419_26@]; float@H_419_26@inter=interval.GetDouble();//得到float,double值@H_419_26@ const@H_419_26@rAPIdJson::Value&ballNum=valueEnt["BallNum"@H_419_26@]; int@H_419_26@ball=ballNum.GetInt();else@H_419_26@ bRet=true@H_419_26@; }while@H_419_26@(0); } 总结
以上是内存溢出为你收集整理的Cocos2dx学习笔记37 Json 数据解析rapidjson库的使用全部内容,希望文章能够帮你解决Cocos2dx学习笔记37 Json 数据解析rapidjson库的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)