[cocos2d-x] HOWTO-integrate json in cocos2dx

今天来写一篇集成json模块到cocos2dx中的流程

多谢其他大侠的分享。从经验上, 我先选择JsonCpp

1. 下载JsonCpp

     下载地址 http://sourceforge.net/projects/jsoncpp/files/latest/download

     说明地址 http://jsoncpp.sourceforge.net/  

     不过这些地址目前被墙掉了, 所以大家自己选择合适的代理进行访问.

     解压到cocos2d-x目录,解压后, 与CocosDenshion平行.

好了,就这么简单,现在你可以使用jsoncpp这个库了,在使用的地方引用头文件json.h就可以了。

二、jsoncpp的一些使用方法介绍:(网上也有很多介绍,我只是写下我工作中遇到的一些)

1、初始化

Json::Value root;

Json::Reader reader;

reader.parse(“{“name”:”sunny”}”, root);

Reader可以用来初始化一个人json从字符串。

2、读取json文件初始化

这是我写的一个方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Json::Value BYJsonDataManager::getJsonFromFile( const char * fileName){
Json::Reader reader;
ifstream file(getFullPath(fileName));
CCAssert(file.is_open(), "file is open fail!" );
Json::Value root;
if  (!reader.parse(file, root, false )) {
CCAssert( false , "Json::Reader Parse error!" );
}
return root;
}
 
const char * BYJsonDataManager::getFullPath( const char * path){
return cocos2d::CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(path);
}

3、解析json

首先生成一个json

Json::Value myjson = getJsonFromFile(“test.json”);//利用上面的函数生成一个json。

int num = myJson["num"].asInt();

string str = myJson["name"].asString();

4、json数组

Json::Value myjson = getJsonFromFile(“test.json”);//利用上面的函数生成一个json。

int i = 0;

Json::Value arr = myjson[i];//获取arr数组的第一个元素

5、利用迭代器获取json的key。(有时候并不知道json的key,这个时候可以利用迭代器获取json的key)

Json::Value myjson = getJsonFromFile(“test.json”);//利用上面的函数生成一个json。

Json::Value::Members members(myjson.getMemberNames());

for (Json::Value::Members::iterator it = members.begin(); it != members.end(); ++it)  {
const std::string &key = *it;
}

6、自己拼装Json数组,(有时候发往服务器的数据是一个json数据)

Json::Value arr;

for(int i = 0 ;i < 5;++i){

Json::Value myjson = getJsonFromFile(“test.json”);//利用上面的函数生成一个json。

arr.append(protocolData);

}

如果想让这个jsonArr有key。

Json::Value arr2;

arr2["array"] = arr;

OK ,目前只记得这些,等我想起其它的再补充。一些比较简单的没有都介绍。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值