cocos2d-x 网络请求


cocos2dx rapidjson 高速解析JSON  --- 【cocos2d-x官方文档】怎样使用CCHttpClient
(泰然网)

数据类型和Json格式

使用CCHttpClient进行cocos2d-x网络编程

Cocos2d-x教程(25)-本地数据加密

cocos2d-x  网络请求

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzMyMTMyOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

怎样写入 或者是 怎样 改动已有的json 文件 大神有没有相关的文档 

奋斗  

给我看看即可

奋斗

ball.json 数据例如以下:

[html] view
plain
copycocos2d-x  网络请求cocos2d-x  网络请求
  1. {
  2. "entities": [
  3. {
  4. "entity": {
  5. "TapOpposite": 0,
  6. "Interval": 0.95,
  7. "BallNum": 1
  8. }
  9. },
  10. {
  11. "entity": {
  12. "TapOpposite": 0,
  13. "Interval": 0.91,
  14. "BallNum": 2
  15. }
  16. },
  17. {
  18. "entity": {
  19. "TapOpposite": 0,
  20. "Interval": 0.95,
  21. "BallNum": 3
  22. }
  23. }
  24. ]
  25. }

在cocos2dx中json的读取是用的rapidjson,包括在cocostudioproject中。所以我们要先引入#include "cocostudio/CocoStudio.h"

  1. void GameWorld::readJson()
  2. {
  3. //json 文档
  4. rapidjson::Document _doc;
  5. bool bRet = false;
  6. ssize_t size = 0;
  7. unsigned char *pBytes = NULL;
  8. do {
  9. pBytes = cocos2d::CCFileUtils::sharedFileUtils()->getFileData("ball.json", "r", &size);
  10. CC_BREAK_IF(pBytes == NULL || strcmp((char*)pBytes, "") == 0);
  11. std::string load_str((const char*)pBytes, size);
  12. CC_SAFE_DELETE_ARRAY(pBytes);
  13. _doc.Parse<0>(load_str.c_str());
  14. CC_BREAK_IF(_doc.HasParseError());
  15. //生成json文档对像
  16. if(!_doc.IsObject())
  17. return;
  18. //是否有此成员
  19. if(!_doc.HasMember("entities"))
  20. return;
  21. // 通过[]取成员值,再依据须要转为array,int,double,string
  22. const rapidjson::Value &pArray = _doc["entities"];
  23. //是否是数组
  24. if(!pArray.IsArray())
  25. return;
  26. for (rapidjson::SizeType i = 0; i < pArray.Size(); i++)
  27. {
  28. const rapidjson::Value &p = pArray[i];
  29. if(p.HasMember("entity"))
  30. {
  31. const rapidjson::Value &valueEnt = p["entity"];
  32. if(valueEnt.HasMember("TapOpposite") && valueEnt.HasMember("Interval") && valueEnt.HasMember("BallNum"))
  33. {
  34. const rapidjson::Value &tapOpposite = valueEnt["TapOpposite"];
  35. int tapOp = tapOpposite.GetInt();      //得到int值
  36. const rapidjson::Value &interval = valueEnt["Interval"];
  37. float inter = interval.GetDouble();  //得到float,double值
  38. const rapidjson::Value &ballNum = valueEnt["BallNum"];
  39. int ball = ballNum.GetInt();      //得到int值
  40. ballParam param;
  41. param.tapOp = tapOp;
  42. param.inter = inter;
  43. param.ballIndex = ball;
  44. m_ballParamVec.push_back(param);
  45. }
  46. }
  47. else
  48. {
  49. return;
  50. }
  51. }
  52. bRet = true;
  53. } while (0);
  54. }

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)。

基础演示样例

  简单地说cocos2d-x  网络请求,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 格数据类型,预先定义的约束,没有必要遵从。

所以,在相同的数据结构,能够改变这样的数据表示。甚至表示以不同的方式同样的事情。


上一篇:转<%%>、<%=%>、<%$%>、<%@%>的区别


下一篇:Ubuntu14.04下安装redis