cocos2dx php,cocos2dx 使用curl库与php服务端通信3

在第二步中我们学会了请求服务端,并且正确的打印了服务端返回的数据,下面我们开始学习怎么处理服务端下发的数据。本例服务端返回的是一个sting类型的json格式数据。接下来我们将学会如何解析json格式数据。

cocos2dx 使用curl库与php服务端通信

代码示例:链接: https://pan.baidu.com/s/1ge92ydH 密码: yj7j

首先我们先分析下我们的json数据。

08c756c795de6642b5c3587915d94ea8.png

我们从返回的json数据来看,我们一共有6条数据。每条数据有三个部分,每个部分都是一个键值对。

这里我们同样用cocos2dx给我们提供的rapidjson库来解析json格式的数据。

首先,在HelloWorldScene.h头文件添加json的引用头文件。

#include "json/rapidjson.h"

#include "json/document.h"

然后我们新建一个CurlReadJson类来实现内容的接收和转换。

这里我直接贴 代码。

//CurlReadJson.h

fa9b29674978dcca4c84450558b11fa8.png

//CurlReadJson.cpp

bcd195ede4dcfbd795b1b16c734ca9e2.png

这个类的功能很简单。主要功能还在调用的地方。

我们在HelloWorldScene.h里,添加一个数据解析的方法InitListByServerData用来拆分单个的json数据。m_map_server_list用来把拆分的json数据保存为客户端需要的数据。

一个oneUpdate方法来更新一次界面显示,把visibleSize,origin改成全局的声明。

a4b5599fd47a11c83fa94a56c711a176.png

这些做好了,首先我们来实现具体的功能代码。

1、处理服务端返回的字符串流,实现单个json数据的拆分。

a90ee9ee93008186eade802be66e5354.png

rapidjson::Document documentRecive;用来转换接收的数据。因为服务端返回给我们的数据虽然是json看起来是json格式的,但是类型是string类型的。通过这些代码我们的数据就会被拆分成单个的json类型的数据了。然后我们在用InitListByServerData方法来实现单个json数据的解析。

dffde107ffa84852c987d168c6902ed6.png

这里CurlReadJson类处理单个的内容数据,然后加入到m_map_server_list里。

然后我们来测试下m_map_server_list里值对不对,在我们创建的oneUpdate方法里实现测试数据。

66ba1f1978dc44fc0135ea4d0f167de6.png

然后我们在menuCloseCallback方法里执行一次调度器。

this->scheduleOnce(schedule_selector(HelloWorld::oneUpdate), 1.0f);//回调更新

bf5615fd5825e183627f3fa65e1d521f.png

下面我们来测试下能不能正确的在游戏窗口显示我们的服务端数据。

ced0977cf1ef96295a2c935a36d755f3.png

4151f86599bbf7b1a4ac9bb05f84900d.gif

数据正常的显示了,大家看看怎么样。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值