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,包括在cocostudioproject中。所以我们要先引入#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,string
const 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);
}

cocos2dx 读取json及解析的更多相关文章

  1. cocos2d-x 读取 json 文件并用 jsoncpp 做解析

    一码胜万言(请看注释) CclUtil.h // // CclUtil.h // PracticeDemo // // Created by kodeyang on 8/1/13. // // #if ...

  2. cocos2d-x把json数据解析到数组或字典中(libjson库)

    以前在cocos2d-x项目中用到json解析,集成了libjson库后发现网上提供的解析方法大多是在解析过程中取得值,并没有将解析结果有效的保存起来,于是摸索一番,把解析结果根据数据格式存到数组或字 ...

  3. c++ rapidjson读取json文件 解析

    库:链接:https://pan.baidu.com/s/1UChrgqLPJxKopyqShDCHjg  密码:3yhz #include <iostream> #include < ...

  4. Unity的Json解析<一>--读取Json文件

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50373558 作者:car ...

  5. cocos2d-x-Json/XML文件

    数据存储几种方式 1. 数据库 2. 文件 3. 内存 这里介绍Json格式与XML格式的文件存储 常用的文件存储数据的格式 1. Json格式 2. XML格式 Json适合存储小数据,XML适合存 ...

  6. plist文件、NSUserDefault 对文件进行存储的类、json格式解析

    ========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...

  7. JSON金额解析BUG的解决过程

    [原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 这是在我们开发的一个支付系统中暴露的一个BUG,问题本身比较简单,有意思的是解决问题的过程.将过程分享出来,希望能够对大家有所帮助. 一 ...

  8. iOS - JSON 数据解析

     iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...

  9. Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

    1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...

随机推荐

  1. (转载)OC学习篇之---类目的概念和使用

    上一篇文章介绍了OC中的@class关键字的使用,这一篇我们介绍一下,OC中的一个特有的亮点:类目 首先我们来看一下场景,如果我们现在想对一个类进行功能的扩充,我们该怎么做? 对于面向对象编程的话,首 ...

  2. MySql 5.6 慢查询

    网上都巨坑 最后在官网找到了开启方法 原来是配置文件改了 Updated example for 2015 MySQL 5.6: slow_query_log = 1slow_query_log_fi ...

  3. 基于AWS的自动化部署实践

    过年前,我给InfoQ写了篇文章详细介绍我们团队在过去4年基于AWS的自动化部署实践.文章包括了:为什么选择AWS.AWS上自动化部署的优势和挑战.我们的解决方案,以及和AWS DevOps方案(Op ...

  4. Ruiy自我识人做事领悟录ing

    是坑总需要人去踩,谁踩谁收获! 做人做事分层分次,后方能至始及终不乱; 做人做事切记诚记信,宁他人负我,我定不负他人! 做人做事做力求清心寡欲; 安静做工,沉静学道;

  5. EasyUI DataGrid 窗口大小自适用--------------未测试

    EasyUI 新版本里添加了 fit 属性,不需要老版本的那么复杂,重新load DataGrid.但是昨天用的时间发现只有一个DataGrid的时候用fit:true 很好使,但是如果有其它元素,如 ...

  6. 一些推荐的spark/hadoop课程

    为了分享给你们,也为自己. 感谢下面的老师们! 1.王家林DT大数据梦工厂的大数据IMF传奇行动课程 总的目录是: 第一阶段:Linux和Java零基础企业级实战 第二阶段:Hadoop和Hive零基 ...

  7. Attach source code to a Netbeans Library Wrapper Module

    http://rubenlaguna.com/wp/2008/02/22/attach-source-code-to-a-netbeans-library-wrapper-module/ Attach ...

  8. Android教程说明-夜神模拟器连接IDE更新让Delphi发现你的手机或夜神模拟器

    相关资料: [深圳]jiuk 发布 1.官网下载模拟器http://www.bignox.com/并运行 2.打开开发者选项刚开始是看不到的->关于平板电脑->多点几次版本号->打开 ...

  9. UVALive 7455 Linear Ecosystem (高斯消元)

    Linear Ecosystem 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/B Description http://7xj ...

  10. Mysql捕捉(网站)应用执行的语句

    如题,很多时候我们需要知道某个程序或者网站链接到额数据库到底执行了什么语句,对于MSsql来说, 比较简单,有相对应的事件查看器,但是对于mysql来说,并没有这个组件或者相关配套工具,此时我们可以 ...