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. Beginner’s Guide(开始者向导)

    This guide gives a basic introduction to nginx and describes some simple tasks that can be done with ...

  2. 黑马程序员——有关protocol的小结

    在OC程序中经常会有这样的问题就是一个类想让其他类帮自己实现某些方法,然后再将结果返回给这个类:如何让一个类要找的代理去实现自己想要的方法呢? 这样就需要有一个协议,让能遵守协议的其他类都能实现协议中 ...

  3. CircleLayout

    CircleLayout https://developer.apple.com/library/ios/samplecode/CircleLayout/Introduction/Intro.html ...

  4. poj 2196 Specialized Four-Digit Numbers

    如果一个数字 十进制的各位数的和 == 十六进制的各位数的和 == 十二进制的各位数的和,则输出,从2992到9999 #include <cstdio> int toDD(int n) ...

  5. python 使用 setup.py 方式安装及包的卸载

     安装:         可通过 --home 或 --prefix 指定安装目录 --prefix=xx/xxx    选择安装目录 --record files.txt   记录所有安装文件的路径 ...

  6. ubuntu设置服务开机启动

    在Ubuntu下用sysv-rc-conf命令,它是chkconfig的替代命令,而使用方法与chkconfig基本相同. 安装: sudo apt-get install sysv-rc-conf ...

  7. VoToucher

    VoToucher package com.isoftstone.pcis.policy.common.utils; import com.isoftstone.pcis.policy.common. ...

  8. JAVA应用apache httpclient探测http服务

    代码很简单,apache都已经提供了封装. import org.apache.commons.httpclient.HttpClient; import org.apache.commons.htt ...

  9. My集合框架第二弹 二叉树的实现

    package com.wpr.collection; import java.util.NoSuchElementException; public class BinarySearchTree&l ...

  10. 项目视频讲解_[HeyJava][尚学堂][CMS文章内容管理系统]

    [HeyJava][尚学堂][CMS文章内容管理系统] http://pan.baidu.com/s/1c0imHrE