cocos2d-x 网络请求
cocos2dx rapidjson 高速解析JSON --- 【cocos2d-x官方文档】怎样使用CCHttpClient
(泰然网)
数据类型和Json格式
使用CCHttpClient进行cocos2d-x网络编程
Cocos2d-x教程(25)-本地数据加密
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzMyMTMyOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
怎样写入 或者是 怎样 改动已有的json 文件 大神有没有相关的文档
奋斗
给我看看即可
奋斗
ball.json 数据例如以下:
- {
- "entities": [
- {
- "entity": {
- "TapOpposite": 0,
- "Interval": 0.95,
- "BallNum": 1
- }
- },
- {
- "entity": {
- "TapOpposite": 0,
- "Interval": 0.91,
- "BallNum": 2
- }
- },
- {
- "entity": {
- "TapOpposite": 0,
- "Interval": 0.95,
- "BallNum": 3
- }
- }
- ]
- }
在cocos2dx中json的读取是用的rapidjson,包括在cocostudioproject中。所以我们要先引入#include "cocostudio/CocoStudio.h"
- void GameWorld::readJson()
- {
- //json 文档
- rapidjson::Document _doc;
- bool bRet = false;
- ssize_t size = 0;
- unsigned char *pBytes = NULL;
- do {
- pBytes = cocos2d::CCFileUtils::sharedFileUtils()->getFileData("ball.json", "r", &size);
- CC_BREAK_IF(pBytes == NULL || strcmp((char*)pBytes, "") == 0);
- std::string load_str((const char*)pBytes, size);
- CC_SAFE_DELETE_ARRAY(pBytes);
- _doc.Parse<0>(load_str.c_str());
- CC_BREAK_IF(_doc.HasParseError());
- //生成json文档对像
- if(!_doc.IsObject())
- return;
- //是否有此成员
- if(!_doc.HasMember("entities"))
- return;
- // 通过[]取成员值,再依据须要转为array,int,double,string
- const rapidjson::Value &pArray = _doc["entities"];
- //是否是数组
- if(!pArray.IsArray())
- return;
- for (rapidjson::SizeType i = 0; i < pArray.Size(); i++)
- {
- const rapidjson::Value &p = pArray[i];
- if(p.HasMember("entity"))
- {
- const rapidjson::Value &valueEnt = p["entity"];
- if(valueEnt.HasMember("TapOpposite") && valueEnt.HasMember("Interval") && valueEnt.HasMember("BallNum"))
- {
- const rapidjson::Value &tapOpposite = valueEnt["TapOpposite"];
- int tapOp = tapOpposite.GetInt(); //得到int值
- const rapidjson::Value &interval = valueEnt["Interval"];
- float inter = interval.GetDouble(); //得到float,double值
- const rapidjson::Value &ballNum = valueEnt["BallNum"];
- int ball = ballNum.GetInt(); //得到int值
- ballParam param;
- param.tapOp = tapOp;
- param.inter = inter;
- param.ballIndex = ball;
- m_ballParamVec.push_back(param);
- }
- }
- else
- {
- return;
- }
- }
- bRet = true;
- } while (0);
- }
json格式
JSON格式:http://www.json.org/
python和JSON的关系请參考:http://docs.python.org/library/json.html
JSON建构有两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中。它被理解为对象(object)。记录(record),结构(struct),字典(dictionary)。哈希表(hash table),有键列表(keyed list)。或者关联数组 (associative array)。
2.值的有序列表(An ordered list of values)。
在大部分语言中。它被理解为数组(array)。
基础演示样例
简单地说
,JSON 能够将 JavaScript 对象中表示的一组数据转换为字符串。然后就能够在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给server端程序。这个字符串看起来有点儿古怪,可是 JavaScript 非常easy解释它。并且 JSON 能够表示比"名称 / 值对"更复杂的结构。
比如。能够表示数组和复杂的对象,而不不过键和值的简单列表。
表示名称 / 值对
依照最简单的形式。能够用以下这种 JSON 表示"名称 / 值对":
{ "firstName": "Brett" }
这个演示样例很基本,并且实际上比等效的纯文本"名称 / 值对"占用很多其它的空间:
firstName=Brett
可是。当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,能够创建包括多个"名称 / 值对"的 记录。比方:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
从语法方面来看,这与"名称 / 值对"相比并没有非常大的优势,可是在这样的情况下 JSON 更easy使用,并且可读性更好。比如。它明白地表示以上三个值都是同一记录的一部分。花括号使这些值有了某种联系。
表示数组
当须要表示一组值时,JSON 不但可以提高可读性,并且可以降低复杂性。比如。如果您希望表示一个人名列表。在 XML 中,须要很多開始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称改动为 person1-firstName这种形式。
假设使用 JSON,就仅仅需将多个带花括号的记录分组在一起:
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
]}
这不难理解。在这个演示样例中。仅仅有一个名为 people的变量。值是包括三个条目的数组,每一个条目是一个人的记录,当中包括名、姓和电子邮件地址。
上面的演示样例演示怎样用括号将记录组合成一个值。
当然。能够使用同样的语法表示多个值(每一个值包括多个记录):
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
] }
这里最值得注意的是,可以表示多个值,每一个值进而包括多个值。可是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是全然动态的,同意在 JSON 结构的中间改变表示数据的方式。
正在进行中 JSON 格数据类型,预先定义的约束,没有必要遵从。
所以,在相同的数据结构,能够改变这样的数据表示。甚至表示以不同的方式同样的事情。
cocos2d-x 网络请求的更多相关文章
- Cocos2d-X多线程(4) 在子线程中进行网络请求
新版本的android系统已经不允许在UI线程中进行网络请求了,必须新建一个线程. 代码实操: 头文件: #ifndef __TestThreadHttp_SCENE_H__ #define __Te ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- IOS开发之—— 在AFN基础上进行的网络请求的封装
网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...
- Android,适合Restful网络请求封装
借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...
- Android okHttp网络请求之Json解析
前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...
- 阶段一:通过网络请求,获得并解析JSON数据(天气应用)
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...
- NSURLSession网络请求
个人感觉在网上很难找到很简单的网络请求.或许是我才疏学浅 , 所有就有了下面这一段 , 虽然都是代码 , 但是全有注释 . //1/获取文件访问路径 NSString *path=@"ht ...
- 【Swift】Alamofile网络请求数据更新TableView的坑
写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...
- 【WP8.1】HttpClient网络请求、进度以及终止
工作这么长时间,起初还是喜欢用面向程序过程的思路去写代码. 慢慢的才会用面向对象的思路分析.解决问题.也算是一点点进步吧. 最近在做一个下载音乐的功能.用到了HttpClient类. 于是就简单的写了 ...
随机推荐
- MySQL中数据表的增操作
今天学习到表的增操作,写个博客总结一下,PS:以下所有的凝视都是我在电脑上所有操作完毕后,再拷贝到记事本上加入的.至于在运行的时候可不能够那样加入凝视,就有待考证了. 选择库 mysql> sh ...
- POJ 1905-Expanding Rods(二分法+计算几何)
题目地址:POJ 1905 题意:一根某种材料做的直杆被夹在两面墙之间,当他受热时长度变长,就会因两面墙的挤压而向上隆起.长度变化函数为 L'=(1+n*C)*L,给定L,C,n,求向上拱起的高度H. ...
- C++实现堆排序
堆排序是合并排序和插入排序排序方法共同的长处.它的时间复杂度O(nlgn),这也是一个地方排序算法:在任何时候,外阵中拥有唯一不变的输入数组存储的元素.引进第一家引进什么样的堆堆. 1.建堆:堆数据结 ...
- MVC5 Entity Framework学习参加排序、筛选和排序功能
上一篇文章实现Student 基本的实体CRUD操作.本文将展示如何Students Index页添加排序.筛选和分页功能. 以下是排序完成时.经过筛选和分页功能截图,您可以在列标题点击排序. 1.为 ...
- 添加服务引用和添加Web引用对比
原文:添加服务引用和添加Web引用对比 在WindowsForm程序中添加服务引用和Web引用对比 为了验证书上有关Visual Studio 2010添加服务引用和Web引用的区别,进行实验. 一. ...
- 玩转Web之Jsp(二)-----jsp中怎么使用CKEditor
在BBS项目或其他一些项目中,我们会发现别人写的一些文本域非常漂亮,而且有多种功能,这是怎么做到的呢?其实通过在jsp文件中引用在线编辑器即可,这里以CKEditor为例. 首先下载CKEditor: ...
- RH133读书 笔记(5) - Lab 5 User and Group Administration
Lab 5 User and Group Administration Goal: To build skills for user and group administration. Estimat ...
- iOS 面试题:OC标题的基本概念<延续>
第一,如何确定一个方法方法名称 删除减号,加,删除返回值,删除参数类型,删除参数,剩下的就是的方法名 秒,id,能够用assign,copy,retain,依据须要使用 第三,autorelease ...
- Serializable Clonable
序列化机制有一种很有趣的用法:可以方便的克隆对象,只要对应的类是可序列化的即可.操作流程:直接将对象序列化到输出流中,然后将其读回.这样产生的新对象是对现有对象的一个深拷贝(deep copy).在此 ...
- apache tomcat 集群! (转)
公司需要一个内部测试局域网, 要求可以支持3000并发访问!以前也没做过服务器这方面.临时抱佛脚,查看了N多文档,他人经验,布置好之后,又遇到了N多问题,功夫不负有心人.终于还是完成了要求!观他人的布 ...
