json数据解析的方法:首先创建JSON文件;然后在类中包含“document.h”和“cocos-ext.h”头文件;接着通过FileUtils获得JSON文件路径,并通过Document对象解析JSON数据;最后获得不同类型的数据值即可。
在网络通信过程中需要传输数据,JOSN数据解析的过程为:首先创建JSON文件,然后在类中包含document.h和cocos-ext.h头文件,接着通过FileUtils获得JSON文件路径,并通过Document对象解析JSON数据,最终获得不同类型的数据值。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它使得人们可以很容易地进行阅读和编写,同时也方便了机器进行解析和生成。JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C、C++、C#、Java、JavaScript、Perl和Python等),这些特性使得JSON成为理想的数据交换语言。
JSON数据解析
例如在Cocos2d.x根目录的external/json目录下面,是JSON处理的相关类,这里主要使用document.h这个头文件,该文件中的两个核心类是GenericValue和GenericDocument,GenericDocument继承GeneficValue。使用GenericDocument用来处理文档内容,如解析文档内容;而GenericValue主要处理值内容,即文档内部的key-value键值对内容,可以根据key获得value。GenericValue和GenericDocument都被重新进行了类型定义。所以可以使用类型定义后的名称。
ypedef GenericDocument
typedef GenericValue
Value重载了数组下标操作符[],所以我们可以使用该操作符,根据JSON文件中的key获得value。
const GenericValue & operator [] (const Ch* name) const{
const_cast
Value还提供了一组GetXXX方法,根据不同的数据类型,获得相应的值。
通过一个实例来演示如何解析JSON数据,操作步骤如下:
创建JSON文件
在项目的classes文件夹下创建一个JSON文件,内容如下:
{"pets":["dog","cat"],"stuInfo":{ "stuAge":23,"stuName":"rose","birthday":"1990-01-12"},"username","tom","other":[true,30]}
在该文件中,pets是一个数组,表示宠物,有两个值dog和pet;stuInfo是一个学生信息;后面是一个usename;最后还有一个other数组。
在类中包含document.h和cocos-ext.h头文件
#include "cocos-ext.h" #include "json/document.h"
通过FileUtils获得JSON文件路径
const char* file_path = FileUtils::getInstance()->fullPathForFilename("hello.json").c_str(); log("文件路径path=%s",file_path);
通过Document对象解析JOSN数据
//文档对象 rapidjson::Document dl; //获得JSON字符串内容 std::string contentStr = FileUtils::getInstance()->getStringFromFile(file_path); //解析 dl.Parse<0>(contentStr.c_str()); //输出JSON文件的内容 printf("%s\n",contentStr.c_str());
获得不同类型的数据值
通过数组下标操作符[],根据key获得Value,并使用Value的GetXXX方法获得不同类型的数据值。
//获取JSON中数组的方法(宠物数组)[dog,cat] const rapidjson::Value & v=d1["pets"]; for(unsigned int i=0;i<v.Size();++i){ const rapidjson::Value & val=v[i]; log("%s",val.GetString()); } //根据key获得value(学生信息)"stuInfo":{"stuAge":23,"stuName":"rose","birthday":"1990-01-12"} const rapidjson::Value & v2=d1["stuInfo"]; //获得整型值 const rapidjson::Value&val1 = v2["stuAge"]; log("val.GetString()=%d",vall.GetInt()); //获得字符串值 const rapidjson::Value&val2 = v2["stuName"]; log("val.GetString()=%s",val2.GetString()); //获得字符串值 const rapidjson::Value&val3 = v2["birthday"]; log("val.GetString()=%s",val3.GetString()); //根据key获得value(other)"other":[true,30] const rapidjson::Value&v3=d1["other"]; for(unsigned int i=0;i<v3.Size();++i){ const rapidjson::Value&val=v3[i]; if(val.IsBool()){ log("%d",val.GetBool()); } if(val.IsInt()){ log("%d",val.GetInt()); } }
以上是什么是json数据解析的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境