温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

cocos2d-x 网络部分之Json数据包

发布时间:2020-06-15 00:47:47 阅读:4583 作者:zswnet 栏目:游戏开发
前端开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

 Json 采用Jsoncpp , 从官网上下载源代码, 目录下面有2个目录:

1. jsoncpp/src/lib_json/ ,这里是json实现方法,要将以下文件加入到工程中

                   ../../Classes/jsoncpp/src/lib_json/json_reader.cpp \

                   ../../Classes/jsoncpp/src/lib_json/json_value.cpp \

                   ../../Classes/jsoncpp/src/lib_json/json_writer.cpp \

2. jsoncpp/include/json ,这里需要设置为include路径, 具体跨平台设置头文件路径,请参考:

(http://zgame.blog.51cto.com/6144241/1066817)

$(LOCAL_PATH)/../../Classes/jsoncpp/include/json \

//-------------------------------------------------------------------

Json使用方法: 

1. 解析

#include "json.h"  using namespace std;  Json::Reader reader;  Json::Value value;    void GameBoard::readJson(std::string net_response) {  //开始解析  if(reader.parse(net_response, value))  {  //读取string  Read_json_GameDataByString(value,"v");     Read_json_GameDataByString(value,"performance");  //解析数组  Json::Value arrayObj = value["result"];  for(unsigned int i = 0;i <arrayObj.size(); i++)  {  int errore = Read_json_GameDataByInt(arrayObj[i] ,"ecode");  ....  }  }  }  

2. 发送

void GameBoard::writeJson(std::string cmd, Json::Value params) {     std::string ss;          using namespace std;     Json::FastWriter writer;     Json::Value root;     Json::Value arrayObj;     Json::Value item;     Json::Value dataArray;     Json::Value dataItem;      if (cmd == kNetGameInit)     {         _globalData.userInfo_.guid =  "test"; #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)          if(!this->gameBoardDelegate->if_QQLogin()){         char * ttt=  this->gameBoardDelegate->Get_Andorid_Udid();         _globalData.userInfo_.guid =  * CCString::createWithFormat("%s",ttt);         }         else{             // qq already set         }         CCLOG("_globalData.userInfo_.guid:%s",_globalData.userInfo_.guid.getCString()); #endif           item["guid"] = 0;         item["code"] = 00;         params["sync"]=0;     }     else     {         item["guid"] = _globalData.userInfo_.udid.m_sString;         item["code"] = _globalData.userInfo_.authcode;         params["sync"]=1;     }     item["uid"] = _globalData.userInfo_.guid.m_sString;     item["pid"] = "2";     item["t"] = "";     item["v"] = "1.3.4";     item["key"] = "1234";     item["server"]="1";          dataItem["cmd"] = cmd;           dataItem["params"] = params;     dataArray.append(dataItem); //数组的处理方式    item["data"] = dataArray;          ss =  item.toStyledString();     CCLOG("%s",ss.c_str());     ss = writer.write(item);      //json数据,http发送    this->gameBoardDelegate->HttpDataSend(ss);         } 

数据包加密在http网络收数据后和发数据前处理就可以。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×