cocos2dx libjson
libjson下载 http://sourceforge.net/projects/libjson/
下载解压后改名成libjson,用到的是根目录下面的JSONOptions.h、libjson.h和_internal\Source下的文件。
导入头文件
#include "libjson.h"
如果是debug模式下,改下面那个参数
把#define JSON_DEBUG注释打开,c++编码把#define JSON_LIBRARY注释
如果是release模式则注释#define JSON_DEBUG

解析json
void readlibjson()
{
/*{
"RootA":"value in parent node",
"childNode":[
{
"childA":"string value c1",
"childB":"dsf c1"
},
{
"childA":"string value c2",
"childB":"dsf c2"
}
]
}*/
unsigned long size;
char* str = (char *)CCFileUtils::sharedFileUtils()->getFileData("testlibjson.json","r",&size);
if (libjson::is_valid(str) == false)
{
delete str;
str = NULL;
CCLog("parse fail!");
return ;
}
JSONNode rn = libjson::parse(str);
delete str;
str = NULL;
CCLog("%s:%s",rn[].name().c_str(),rn[].as_string().c_str());
int tmp = rn.size();
CCLog("%d",tmp);
for (int i = ; i<rn[].size(); i++)
{
JSONNode temp = rn[][i];
for (int j = ; j< temp.size(); j++)
{
CCLog("%s:%s",temp[j].name().c_str(),temp[j].as_string().c_str());
} } parseJSON(rn);//递归解析json的结构 } //递归解析json的结构
void parseJSON(const JSONNode & n){
JSONNode::const_iterator i = n.begin();
while (i != n.end()){
// recursively call ourselves to dig deeper into the tree
if (i -> type() == JSON_ARRAY || i -> type() == JSON_NODE){
parseJSON(*i);
}
if(i->name()!="" && i->as_string()!="")
CCLog("%s:%s",i->name().c_str(),i->as_string().c_str());
//increment the iterator
++i;
}
}
输出:
RootA:value in parent node
2
childA:string value c1
childB:dsf c1
childA:string value c2
childB:dsf c2
RootA:value in parent node
childA:string value c1
childB:dsf c1
childA:string value c2
childB:dsf c2
创建json
void writelibjson()
{
JSONNode n(JSON_NODE);
n.push_back(JSONNode("RootA","value in parent node"));
JSONNode c(JSON_ARRAY);
c.set_name("childNode"); JSONNode c1(JSON_NODE),c2(JSON_NODE);
c1.push_back(JSONNode("childA","string value c1"));
c1.push_back(JSONNode("childB","dsf c1"));
c2.push_back(JSONNode("childA","string value c2"));
c2.push_back(JSONNode("childB","dsf c2"));
c.push_back(c1);
c.push_back(c2);
n.push_back(c); CCLog("==%s",n.write_formatted().c_str()); //下面是输出到保存文件
unsigned long size;
char filePath[] = {'/0'};
memset(filePath,,sizeof(filePath));
strcat(filePath,CCFileUtils::sharedFileUtils()->getWritablePath().c_str());
strcat(filePath,"testlibjson.json"); FILE* file = fopen(filePath,"w+");
fwrite(n.write_formatted().c_str(),n.write_formatted().size(),,file);
fclose(file); }
输出:
=={
"RootA" : "value in parent node",
"childNode" : [
{
"childA" : "string value c1",
"childB" : "dsf c1"
},
{
"childA" : "string value c2",
"childB" : "dsf c2"
}
]
}
cocos2dx libjson的更多相关文章
- cocos2d-x把json数据解析到数组或字典中(libjson库)
以前在cocos2d-x项目中用到json解析,集成了libjson库后发现网上提供的解析方法大多是在解析过程中取得值,并没有将解析结果有效的保存起来,于是摸索一番,把解析结果根据数据格式存到数组或字 ...
- (原创)cocos2dx使用jsoncpp的正确姿势
环境: vs2010, cocos2dx@2.1.4, win32, jsoncpp-src-0.5.0.tar.gz jsoncpp下载地址: http://sourceforge.net/proj ...
- cocos2dx json数据解析
转自:http://blog.csdn.net/wangbin_jxust/article/details/9707873 cocos2dx本身没有json解析类库,我们这里引入libjson进行解析 ...
- cocos2d-x-Json/XML文件
数据存储几种方式 1. 数据库 2. 文件 3. 内存 这里介绍Json格式与XML格式的文件存储 常用的文件存储数据的格式 1. Json格式 2. XML格式 Json适合存储小数据,XML适合存 ...
- cocos2d-x高级学习
弱联网开发技术: libcurl 添加lib文件:libcurl_imp.lib pthreadVCE2.lib 添加头文件:#include"curl/curl.h" curl ...
- cocos2d-x游戏引擎核心之十——网络通信
一.建立基本的http通信并得到返回信息 1.创建cocos2dx工程 2.项目引用外部库 如果要使用cocos2dx的CCHttpClient来进行网络访问,则需要引入cocos2dx的相关库,详细 ...
- (转载)使用curl 和 libjson 完成联网和数据解析
转载地址:http://my.oschina.net/cocosgame/blog/71181 libjson 编译和使用 - 3. libjson的C接口 API http://blog.csdn. ...
- cocos2dx调用浏览器打开网址
安卓端cocos2dx/platform/android路径下CCApplication.h: virtual void openURL(const char* pszUrl); CCApplicat ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
随机推荐
- IOS AsyncSocket
导入AsyncSocket.h AsyncSocket.m AsyncUdpSocket.h AsyncUdpSocket.m 以及 CFNetWork.framework async ...
- 《Python 学习手册4th》 第十二章 if测试和语法规则
''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...
- 树-哈夫曼树(Huffman Tree)
概述 哈夫曼树:树的带权路径长度达到最小. 构造规则 1. 将w1.w2.-,wn看成是有n 棵树的森林(每棵树仅有一个结点): 2. 在森林中选出根结点的权值最小的两棵树进行合并,作为一棵新树的左. ...
- 看仪表盘——validation
先试想一下,对于一个简单的二分类问题,我们如何选择合适的算法? 我们有许许多多的H,如何选择出最为合适的算法? 最合理的方法是:对于每一个H,我们选择出Eout最小的g,然后对于各个g,再选择Eout ...
- RabbitMQ>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as OnFail is set to ignore.-报错解决方案 原来是NNND。。。
>Erlang machine stopped instantly (distribution name conflict?). The service is not restarted as ...
- MYSQL数据库性能调优之一:调优技术基础
1.mysql数据库优化技术有哪些? 2.数据库三层结构? 3.数据库3NF
- Gym 100818F Irrational Roots (数学)
Irrational Roots http://acm.hust.edu.cn/vjudge/contest/view.action?cid=101594#problem/F [题意]: 判断一个整系 ...
- Define custom @Required-style annotation in Spring
The @Required annotation is used to make sure a particular property has been set. If you are migrate ...
- HDU2544最短路(dijkstra)
用dijkstra来练练手 #include<iostream> #include<stdio.h> #include<string.h> #include< ...
- Win7关机出现关闭程序提示框
运行输入Gpedit.msc回车打开组策略,在左侧选计算机配置/管理模板/系统/关机选项,在右侧双击“关闭会阻止或取消关机的应用程序的自动终止功能”,在打开的提示框中选“已启用”,按确定即可.