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引 ...
随机推荐
- VMtools安装以及设置
一.安装VMtools 点击VMware菜单的——虚拟机——安装VMware Tools,在弹出的对话框中选择“安装”.这时,在Ubuntu下会自动加载Linux版的VMware Tools的安装光盘 ...
- WebStorm2016.1 破解 激活
WebStorm2016.1 破解 激活 方法来自 Rover12421 大神. 1.从官网下载WebStorm2016.1安装. 2.下载 破解补丁 并解压,记住路径 3.编辑WebStorm安 ...
- File-nodejs
文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集.您可以通过调用require('fs')来获取该模块.文件系统模块中的所有方法均有异步和同步版本. 文件系统模块中的异步方法需要 ...
- 【Spark学习】Apache Spark for 第三方Hadoop分发版
Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4137979.html
- Spark SQL概念学习系列之如何使用 Spark SQL(六)
val sqlContext = new org.apache.spark.sql.SQLContext(sc) // 在这里引入 sqlContext 下所有的方法就可以直接用 sql 方法进行查询 ...
- HDU 5835 Danganronpa (贪心)
Danganronpa 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5835 Description Chisa Yukizome works as ...
- iOS学习之自动布局
Autolayout: 最重要的两个概念: 约束:对控件位置和大小的限定条件 参照:对控件设置的约束是相对于哪一个视图而言的 自动布局的核心计算公式: obj1.property1 =(obj2.pr ...
- 使用gson进行json转换
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. 示例代码如下: 实体定义 ...
- HDU 1796How many integers can you find(简单容斥定理)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- [转]ORA-00907: 缺失右括号
转至:http://www.cnblogs.com/Olive116/p/5149680.html ORA-00907: 缺失右括号 前言 最近在开发过程中使用oracle数据库,在程序中进行查询数据 ...