这几天有点小闲,回想前几天,自己研究些基础东西,又是看书又是上网搜又是实验,每个小知识点都花了一两天,其实有人指点一下,几分钟应该就能解决,为了防止以后再遇到这些问题,又要重新研究,还是自己把它纪录下来,再用的时候看一下
json是一种小型数据库,可以进行简单的读写,相对于slqlite更适合于内存紧张的手机,而且cocos2d本身是支持json的,虽然它不主动提供这种库。json适合写入比较固定的,不会改变的数据,比如游戏人物的出始属性。
关于json的创建,首先要在mac上创建个文本编辑,然后把后缀改变json,再删掉里面的乱码,即可带入项目里面的resources去。
关于要写入的方法,很简单,直接再json文件里面写就行了,写入的具体格式如下
{
”a1“:
[
{”a2“:a3,
“a4”:a5'
}
],
"a6":
[
{.....
}
]
}
a1,a6指的是具体的对象,a2,a4指的是具体的属性,a3,a5指的是a2,a4具体的属性值。
需要注意的是a1,a6,a2,a4,一定要打引号和冒号,a3,a5和中括号后面一定要打逗号,当a3是数字的时候不需要打引号,但当它为字符串的时候一定要打引号。这些小细节很重要,因为json本身不是xcode的编译文件,所以出错了不会提示,只会无法提出数据。
关于在头文件中引用json的方法,首先要声明#import "CJSONDeserializer.h"
然后写入函数 NSString *path = [[NSBundle mainBundle]pathForResource:@"hero" ofType:@"json"];
NSData *jsonData = [[NSFileManager defaultManager] contentsAtPath:path];
CJSONDeserializer *jsonDeserializer = [CJSONDeserializer deserializer];
NSError *error = nil;
NSDictionary *jsonDict = [jsonDeserializer deserializeAsDictionary:jsonData error:&error];
if (error) {
//handle Error, didn't have here.
};
NSArray *dictArray = [jsonDict valueForKey:@"Seiger"];
for (NSDictionary *dict in dictArray) {
/* 从json调用属性*/
NSString *Seigerbhp = [dict valueForKey:@"Bhp"];
};
hero是json的文件名,seiger是具体的对象,bhp是要引用的属性。
因为是用指针引出的,所以还要再转换成函数指针,再转成数据,有点麻烦。
大概的例子就是这样int Seigerbattack1=[Seigerbattack intValue];
seiger Seigerhp=Seigerbhp1+(Seigerlevel1-1)*Seigerghp1;。
json文件大概的用法就是如此。