cocos2d-x自代的Json库解析json(转)

jsoncpp库在cocos2d-x游戏开发中的应用指南 在JSON数据处理中,使用jsoncpp库解析JSON字符串是常见的操作。jsoncpp提供了parse函数用于将JSON格式的字符串解析为内部数据结构。该函数能够解析JSON对象和数组,并将它们转换为对象,这使得后续的数据操作变得更加容易。下面是一个使用parse函数解析字符串的示例代码:std::cout << "JSON解析成功" << std::endl;// 在这里可以对root进行进一步操作} else { 阅读详情
之前在2.0.3版本的时候用过一个jsonCpp的库,不过后来的版本是好像加入了json库,因为cocostudio导出的界面数据和骨格动画数据用的其实就是json文件。没有看库里边是怎么解析的,在网上找了一下,找到了下边的文章说不定有用。现在手机游戏热火超天的时代快过去了,网上相关的文章是越来越少了,cocos2d-x用的是C++所以学习成本相对来说也比Unity3d要高很多。但这个引擎是开源的,可以使用大量的第三方C++库。这一点是没有什么游戏引擎可以比的了的。
json研究了一天,累死了,看了网上发的各种解析方法,都弄的一知半解,也不提供一个demo让我们这些菜鸟看一下,无奈,自己整一个,希望能帮到那些在json解析上卡壳的程序猿!
要解析json先得知道json是什么,什么样的结构,英文好的去http://www.json.org/看,官网,清晰明了。英文不好的去http://www.w3school.com.cn/json/json_intro.asp看,讲得也不错,json本身简单,看看就可以了!
在提供一个json的矫正工具,防止在json格式上纠结:http://www.ij2ee.com/bejson/bejson.html
好了,该上硬货了:
先导入Json.h头文件,我用的是2.2版本的,3.0版本的需要自己指一下路径,然后json获取的方法名有些变动,不过变动不是很大!
3.2版本 #include "editor-support/spine/Json.h"
void FirstLayer::parseJsonObjects(char *pJsonStr){
    Json* jsonRoot = Json_create(pJsonStr);
   
    Json* jsonChild = jsonRoot->child;
   
    //    servers = new Vector();
  
    while (jsonChild) {
//下面列举json的6种格式,都比较简单,我就用常用的string类型和比较复杂的array类型做示范吧!
        switch (jsonChild->type) {
            case Json_NULL:{
               
                break;
            }
            case Json_Number:{
           
                break;
            }
            case Json_Object:{
                break;
            }
            case Json_String:{
                CCLOG("<<<<<<<<%s",jsonChild->valuestring);
                break;
            }
            case Json_True:{
                break;
            }
            case Json_Array:{
                Json *json=jsonChild->child;
                CCLOG("size=%d",Json_getSize(jsonChild));
//在这我给出三种遍历json数组的方法,让不同编程风格的人都能找到自己喜欢的遍历方式
//第一种:
               
               
//第二种
                for (int i=0; i
                    Json *jjson=Json_getItemAt(jsonChild, i);
                    CCLOG("<>name=%s",Json_getItem(jjson, "name")->valuestring);
                }
//第三种
               
                while (json) {
                    //单独遍历法
                   
//                    CCLOG("firstName=%s,lastName=%s",Json_getString(json, "firstName", NULL),Json_getString(json, "lastName", ""));
                    Json* tags = Json_getItem(json,"tags");
                    Json* name = Json_getItem(json,"name");
                    Json* source = Json_getItem(json,"source");
                    CCLOG("tags:%s,name=%s,source=%s", tags->valuestring,name->valuestring,source->valuestring);
                    json=json->next;
                }
                break;
            }
            default:
                break;
        }
        jsonChild=jsonChild->next;
    }

   //遍历结束,释放json对象结构
    Json_dispose(jsonRoot);
}

在需要调用上述方法的地方写上如下代码:
//获取json文件的路径
std::string path=CCFileUtils::sharedFileUtils()->fullPathForFilename("newFile.json");
    unsigned long len=0;
    if(CCFileUtils::sharedFileUtils()->isFileExist(path)){
//读取文件数据
    unsigned char* str=CCFileUtils::sharedFileUtils()->getFileData("newFile.json", "r", &len);
//调用上面写的解析函数
    this->parseJsonObjects((char*)str);
    }
OK,是不是就成功了!
好了,是不是很简单,这是cocos2dx中自带的方法,还有大神介绍libjson和jsonbox来解析,我会继续关注的,大家感兴趣的也可以去研究一下,希望能写出详细的教程,让我这等菜鸟能够快速入门吧!
上面Demo的下载可以去:http://dl.vmall.com/c0arw894y9
转载请注明仗剑量天http://blog.sina.com.cn/s/blog_923fdd9b0101f94n.html
cocos2d-x json字符串与cocos2d::Value转换工具 该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos::Value后就可以很方便的使用了,其本质就是json字符串的数组对应cocos2d::ValueVector,对象对应cocos2d::ValueMap. 立即下载

相关推荐

opencv图像去畸变

opencv图像去畸变

智能机器人产学研基地 4871

[Cocos2dx]之json数据的解析

///需要引用的头文件 #include "json/rapidjson.h" #include "json/document.h" #include "json/writer.h" #include "json/stringbuffer.h" 代码如下: auto sharedFileUtils = FileUtils::getInstance(); std::s

哈昵称被占用了 443

ksz9031 mmd读取不了_ZYNQ. LwIP.PHY.KSZ9031RNX

新一块板子米尔科技的z-turn 使用的PHY芯片是Micrel的 KSZ9031RNX 而不是zedboard上的Marvell的。直接使用lwip的echo server demo时会报错 , 无法启动。在网上找了很久终于找到几篇关于这个问题的文章。修改PHY的驱动xemacpsif_physpeed.c文件该芯片的PHY Identifier 是 0x0022bsp设置中修改参数以提速MEM...

weixin_39626298的博客 924

cocos2d-x中使用json

首先去下载JsonCpp这个库,放到项目的Class目录下,再在项目中添加进来。 然后、、、然后看图。。。 //JsonTestLayer.h #pragma once #include "json/json.h" #include "cocos2d.h" USING_NS_CC; class JsonTestLayer : public CC...

weixin_34345753的博客 147

在x86机器上运行jailhouse

jailhouse jaihouse提供了一个demo ,https://github.com/siemens/jailhouse-images可以用于编译一整套可用的demo。 适用于多个平台。编译过程主要参考https://blog.youkuaiyun.com/weixin_39541632/article/details/110422345 此demo可以生成多个平台所用的操作系统image。 ...

闲人的专栏 3004

Ubuntu 22.04下Realtek R8125网卡驱动安装避坑指南(附DKMS自动编译配置)

本文详细介绍了在Ubuntu 22.04系统上为Realtek R8125 2.5GbE网卡安装驱动的完整流程与避坑指南。针对内核通用驱动r8169的冲突问题,重点讲解了如何通过DKMS(Dynamic Kernel Module Support)实现驱动的持久化自动编译与安装,确保系统内核升级后网卡驱动依然有效。内容包括环境准备、驱动源码获取、DKMS标准配置、驱动冲突解决(设置黑名单)以及日常维护与故障排查方法,旨在为用户提供一个一劳永逸的稳定解决方案。

echo99的专栏 1023

cocos2dx 生成XML与解析XML,生成JSON

//————————————————–生成XML———— /*tinyxml2::XMLDocument *pDOC = new tinyxml2::XMLDocument(); XMLDeclaration *pDec = pDOC-&gt;NewDeclaration(“xml version=\”1.0\”encoding=\”UTF-8\”“); pDOC-&...

孤灯夜行的博客 429

ChromeOS安装教程

ChromeOS,是基于Linux内核研发的ChromiumOS开源系统的闭源系统,最大的特色就是内置了Chrome浏览器,早期主要以Web云端应用程序为主,后来逐渐引入了Android子系统和Linux子系统。本文主要简述摸索的家用笔记本安装ChromeOS安装方法,供各位玩机朋友参考。

weixin_45751495的博客 8114

cocos对象转为josn格式的字符串

/将对象转换为JSON格式的字符串。//将josn格式的字符串转换为对象。

weixin_45514287的博客 248

实战篇| app爬虫不用真机

之前写过一篇基于真机app爬虫《App爬虫实战篇-以华为真机手机爬取集换社的app为例》,如果大家有用真机爬虫的经历,会深刻认识到真的不方便,一是自己的手机,经常会被电话、微信等打断,二是闲置手机,面对小批量数据还能勉强,大批量爬虫,会导致成本指数级上升,并且控制起来相对麻烦。以下就是常见的模拟器。emulator -avd my_avd -no-snapshot-save # 启动时不保存 snapshot。emulator -avd my_avd -wipe-data # 清除数据(恢复到出厂)

youbingchen的博客 597

Google Earth Engine(GEE)—— 显示如何使用迁移的训练样本进行多年分类的脚本(sentinel-2影像为例)光谱差异()

HydroSHEDS 是一种地图产品,它以一致的格式为区域和全球范围的应用程序提供水文信息。它提供了一套不同比例的地理参考数据集(矢量和栅格),包括河流网络、流域边界、排水方向和流量累积。请注意,对于北纬 60 度以上的地区,HydroSHEDS 数据的质量明显较低,因为没有可用的基础 SRTM 高程数据,因此分辨率较低的 DEM(USGS 提供的 HYDRO1k)。该数据集基于 15 角秒(赤道约 500 米)分辨率栅格数据提供嵌套的分层分水岭多边形。光谱信息和之前不同的点:训练结果。

此星光明博客 966

Cocos2d-x教程(14)-Cocos2d-x 2.2.x版本 Json解析(初级篇)

欢迎加入 Cocos2d-x 交流群:193411763 欢迎转载,转载时请注明原文出处:http://blog.youkuaiyun.com/u012945598/article/details/17398925 源码下载地址:http://download.youkuaiyun.com/detail/u012945598/6736027 Cocos2d-x 2.2.0之前的版本常用的J...

xidajiancun 151

四足狗机器人硬件开发技术栈详解

本文系统介绍了四足狗机器人的硬件开发技术,重点分析了五大核心模块:机械结构(骨架设计)、动力系统(关节驱动)、感知系统(环境监测)、控制系统(决策中枢)和电源系统(能源管理)。文章详细阐述了各模块的选型标准、技术要点和协同设计原则,提供了从需求定位到组装调试的完整开发流程,并针对常见问题给出解决方案。随着材料轻量化、模块标准化和AI集成化的发展趋势,四足机器人硬件将向更灵活、更智能的方向演进,为工业巡检、应急救援等场景提供更强大的移动平台支持。

start_up_go的博客 284

原来Cocos2d-x里面有对json解析的库

花了一整个下午的时间在网上查找资料,了解不同的json库进行对比。 找到的有libjson、jsonCpp和JsonBox 根据使用的难易程度首先选择JsonBox,确实看起来更简单些,但是编译到Eclipse上会有error:undefined reference to 'JsonBox::Value::Value()'这样的错误,在网络里花费了好久的时间也没有找到解决方案。于是最终舍弃。

ysuiboli的专栏 2602

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Cocos2d-x 3.0 Json用法 Cocos2d-x xml解析

Cocos2d-x 3.0 加入了rapidjson库用于json解析。位于external/json下。 rapidjson 项目地址:http://code.google.com/p/rapidjson/wiki:http://code.google.com/p/rapidjson/wiki/UserGuide 下面就通过实例代码讲解rapidjson的用法。 使用rap...

dianbiao4727的博客 126

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

cocos2d-x读取并解析json文件的方法[CSJson]

1.我们准备了一个json文件(test.json),在resource下面: { "data": { "lastArea": { "areaId": 200, "label": 1, "name": "我是区服", "state": 1 },

zwcwu31的专栏 3402

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Cocos2d-x教程(15)-Json解析(高级篇)

欢迎加入 Cocos2d-x 交流群: 193411763                                    转载时请注明原文出处:                 需要源码请留下邮箱地址 今天我们来学习一下关于比较复杂的Json数据的解析方法。         在上一节中已经说明,2.2.0以上版本的2d-x已经包含了老版本中我们所使用的jsoncpp的文件,所以我

Cocos2d-x,IOS,游戏,开发/交流/学习/资源 马宗扬 7765

Cocos2d-x 数据解析(json/xml)

在我们获取网络数据时,基本上使用的都是xml以及json,因此学习对这两种数据进行解析,对我们有很大的帮助。 下面是代码: HelloParse.h: #ifndef __HELLOPARSE_H__ #define __HELLOPARSE_H__ #include "cocos2d.h" using namespace cocos2d; class HelloParse :...

houjia159的专栏 324

Cocos2d-x学习(五):cocos2d-x解析json(使用libjson库)

cocos2d-x很好,扩展性很好,但是其第三方库还不是很成熟,正如王哲所说,需要我们自己寻找,比如json解析和格式化。 我们的网络部分需要用到json,网络部分用的比较多的就是json,毕竟很轻量级么。。。上午我看到cocos2d-x论坛里关于json的第三方库有人提到了两个,一个是jsoncpp,一个是libjson,我上午首选的是jsoncpp,看其编译过程,是比较复杂的,我耐着

oneRain88的专栏 2万+

cocos2d-x 使用libjson解析json

cocos2d-x自带了json解析方法,也可以很方便进行json操作,使用方法 1,引入json.h头文件 2,代码示例: //"svrId":6, //"name":"Andromeda&Pandora", //"ip":"69.162.106.170", //"port":8892, //"capacity":20, //"status

Unity3d 攻城师一枚 3831

Cocos2d-x数据模块教程02:Json数据操作

这是一个关于Cocos2d-x的数据模块的系列教程,内容包括UserDefault数据存储、Json数据操作、XML数据操作、plist文件操作、CSV文件解析以及SQLite3数据库基础用法。 在游戏中使用Json来储存数据,既方便读取,又方便管理。 比如Cocos Studio 1.6之前版本导出的资源扩展名就是 .ExportJson 格式的。 Cocos2d-x 3.x 加入了rapidjson库用于json解析。位于external/json下。 ...

翻肚鱼儿的博客 794

cocos2d-x解析json(使用libjson库)

cocos2d-x很好,扩展性很好,但是其第三方库还不是很成熟,正如王哲所说,需要我们自己寻找,比如json解析和格式化。  我们的网络部分需要用到json,网络部分用的比较多的就是json,毕竟很轻量级么。。。上午我看到cocos2d-x论坛里关于json的第三方库有人提到了两个,一个是jsoncpp,一个是libjson,我上午首选的是jsoncpp,看其编译过程,是比较复杂的,我耐

Jingle的专栏 2584

cocos2d-X:Json数据(2)

JSON文件使用和更改 Cocos2d-x 3.x 加入了 rapidjson库,用于Json解析。位于external/json下。  Json文件格式必须为UTF8无BOM格式编码,不然游戏中会出现乱码。 只支持标准的Json格式,一些非标准的Json格式不支持。一些常用的解析方法需要自己封装。注意判断解析节点是否存在。 PS:解析的Json文件,根节点必须为对象、或数组。不然

Wind not Stop! 547

Cocos2d-x 制作JSON字符串的方法

这个里主要说的是如何编写JSON格式的字符串。直接上代码比较简单。 MakeJson.h // // MakeJson.h // cpp4 // // Created by 杜甲 on 14-9-9. // // #ifndef __cpp4__MakeJson__ #define __cpp4__MakeJson__ #include "cocos2d.h" #include

杜甲同学的专栏 2951
上一篇: 升级Xcode到6.1之后使用iPhone6真机测试cocos2d-x报错不支持arm64的解决方案(转)
下一篇: 从Maya中导出COLLADA文件(转)
woodcol
博客等级 码龄19年 288粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值