原来Cocos2d-x里面有对json解析的库

花了一整个下午的时间在网上查找资料,了解不同的json库进行对比。
找到的有libjson、jsonCpp和JsonBox
根据使用的难易程度首先选择JsonBox,确实看起来更简单些,但是编译到Eclipse上会有error:undefined reference to 'JsonBox::Value::Value()'这样的错误,在网络里花费了好久的时间也没有找到解决方案。于是最终舍弃。
在libjson和jsonCpp对比中,网上有人说libjson的解析速率更加,于是转向libjson,但将它编译在Eclipse上的教程基本上也没在网上找着。
然后,在不断查找。。不断查找。。不断查找的过程中,看到了一篇文章讲 Cocos2d-x 2.2.0以上版本已有jsoncpp库,而我恰好用的是2.2.2版本的,所以一切的问题还在源头,舍近求远饶了一大圈。根据某楼主的方法,我一个一个的搜索Android.mk文件,最终在extensions/spine路径下有json.h和json.cpp文件。
搞得一整个下午头昏昏沉沉的,不该啊!多么痛的领悟!想想以后想办法一定还得从源头来!
在网上看到个讲解Cocos2d-x自带json库的教程,自己记录下,也分享下。

放下链接:http://blog.csdn.net/u012945598/article/details/17398925

----------------------------------------------------------------------------------------------------------------------------

以上内容是昨天下午写的,写完按照以上链接讲解编译出现错误,发现有问题后,先删除了。

声明:非以上链接讲解错误而导致的编译错误,完全是因为笔者眼神有问题,漏看了链接文章里括号中的重要信息!!!

问题在以上黄色标记处,2.2.2版本的json库是rapidjson,引用命名空间不再是using namespace CSJson;  而是using namespace rapidjson;!!!

经过验证完全可以解析包含json数据的字符串内容。

变量string resultData存放的json数据内容为:

[{"rid":1,"roomName":"hi","roomOwner":"yc","playerNum":2,"gameState":0},{"rid":2,"roomName":"hello","roomOwner":"y","playerNum":3,"gameState":0}]
以下内容是对以上数据解析的代码

    Document d;
	d.Parse<0>(resultData.c_str());

	const Value &array = d;
	assert(array.IsArray());

	for(SizeType i=0; i<array.Size(); i++){

	CCLOG("resultData:rid=%d  roomName=%s  roomOwner=%s  playerNum=%d  gameState=%d\n",
			array[i]["rid"].GetInt(),array[i]["roomName"].GetString(),
			array[i]["roomOwner"].GetString(),array[i]["playerNum"].GetInt(),
			array[i]["gameState"].GetInt());
	}
控制台输出的数据为:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值