Cocos2d-x教程(15)-Json解析(高级篇)
来源:互联网 发布:数据结构算法怎么记 编辑:程序博客网 时间:2024/05/29 03:26
欢迎加入 Cocos2d-x 交流群: 193411763
视频教程地址: http://www.tudou.com/programs/view/nCNuA73mOLM/
转载时请注明原文出处:http://blog.csdn.net/u012945598/article/details/17416531
需要源码请留下邮箱地址
今天我们来学习一下关于比较复杂的Json数据的解析方法。
在上一节中已经说明,2.2.0以上版本的2d-x已经包含了老版本中我们所使用的jsoncpp的文件,所以我们可以直接使用无需引入任何库。下面进入正题....
在制作游戏的过程中,有很多关于游戏的信息实际上是保存在文件中的,举个例子来说,一款游戏的战斗模块,它的关卡设计需要很多的数据,比如某一关怪物的数量,怪物的刷新时间等等,这些数据都可以保存在文件中,在需要的时候通过某些方法来读取。.json是我们常用的一种格式,下面我们首先来写一个json文件
{
"Tollgate": [
{
"Type1": {
"RefreshTime": 0.5,
"Count": 100
},
"Type2": {
"RefreshTime": 5,
"Count": 2
}
},
{
"Type1": {
"RefreshTime": 0.5,
"Count": 120
},
"Type2": {
"RefreshTime": 5,
"Count": 2
}
}
]
}
这是笔者刚刚写的一个json文件,我们来分析一下它的结构,处于最外层的是 “Tollgate”:[ ] ,Tollgate 代表的是关卡,可以这个键所对应的值是一个数组,我们可以看到数组内包含了两个元素[ { },{ } ], ,事实上这两个元素单独拿出来后又是一个Json格式的数据,也是OC中所说的词典,这两个元素在数组中被默认为第0个元素与第1个元素,此处笔者将第0个元素定义为第1关,将第1个元素定义为第2关;第一关中又包含了两个键值对,第一个键是"Type1",第二个键是"Type2",分别代表两种怪物类型,而每个Type对应的值又是一个词典{ },词典内又包含了两个键值对,分别是"RefreshTime"和"Count",代表怪物的刷新时间与怪物的总数。
下面我们来看一下如何在程序中如何获取到这些数据,新建一个工程,将json文件放到工程目录下,头文件及命名空间不要忘记添加。
1.首先要获取Json文件内的全部数据:
unsigned long size;
const char* file = (char*)CCFileUtils::sharedFileUtils()->getFileData("child.json","r", &size);
通过打印该字符指针 file 我们会在控制台看到Json文件的全部内容
2.通过Reader的parse方法将Json格式转换成一个ValueReader reader;
Value root;
reader.parse(std::string(file),root,false);
3.获取到Value中的Tollgate所对应的Value,也就是一个数组
Value array;
array=root.get("Tollgate",NULL);
get函数的第二个参数代表找不到Tollgate对应的Value时的默认Value
4.数组中共有两个元素,我们现在获取第一个元素中的Type1中,Count所对应的Value
Value count;
count=array[0]["Type1"].get("Count",NULL);
5.此时的count是一个Value类型,我们需要将其转换为整型,然后输出
CCLOG("%d",count.asInt());
输出后可运行看到结果为100。
这就是解析Json文件的全过程,我们会觉得有些繁琐,下面笔者将这个过程做一个简单的封装。
新建一个类,笔者命名为AnalysisJson,.h文件中代码如下:
.cpp文件代码如下:
在HelloWorld中引入AnalysisJson头文件,然后创建一个对象,并调用获取怪物刷新时间与数量的方法:
运行项目控制台输出结果:
这样便完成了一个Json解析。
- Cocos2d-x教程(15)-Json解析(高级篇)
- Cocos2d-x教程(15)-Json解析(高级篇)
- Cocos2d-x教程(14)-Cocos2d-x 2.2.x版本 Json解析(初级篇)
- Cocos2d-x教程(14)-Cocos2d-x 2.2.x版本 Json解析(初级篇)
- Cocos2d-x教程(22)-lua中的json解析
- cocos2d-x Json解析
- Cocos2d-x高级开发教程
- quick-cocos2d-x解析json
- cocos2d-x json解析 jsonBox
- cocos2d-x json解析 jsonBox
- cocos2d-x json解析 jsonBox
- cocos2d-x lua json解析
- cocos2d-x RapidJson解析json
- Cocos2d-x高级开发教程阅读笔记
- Cocos2d/x 解析服务器JSON数据
- cocos2d-x 使用libjson解析json
- Cocos2d-X Json格式文件的解析
- cocos2d-x 3.2 Json文件解析
- 毛坯房收楼注意事项
- 软件设计通用原则整理
- 蜗牛—cocos2dx之2.2以上版本新建项目
- 可给大爷累死了
- 台湾LOKE品牌行车记录器强势挺进内地市场
- Cocos2d-x教程(15)-Json解析(高级篇)
- AS3的性能优化建议
- 第十七周 三个数排序
- ios编程--AVCapture编程理解
- Windows下安装MySQL-python
- OCP-1Z0-053-V13.02-695题
- CodeForces 374 A. Inna and Pink Pony
- NPOI创建docx表
- 控制寄存器