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的更多相关文章

  1. cocos2d-x把json数据解析到数组或字典中(libjson库)

    以前在cocos2d-x项目中用到json解析,集成了libjson库后发现网上提供的解析方法大多是在解析过程中取得值,并没有将解析结果有效的保存起来,于是摸索一番,把解析结果根据数据格式存到数组或字 ...

  2. (原创)cocos2dx使用jsoncpp的正确姿势

    环境: vs2010, cocos2dx@2.1.4, win32, jsoncpp-src-0.5.0.tar.gz jsoncpp下载地址: http://sourceforge.net/proj ...

  3. cocos2dx json数据解析

    转自:http://blog.csdn.net/wangbin_jxust/article/details/9707873 cocos2dx本身没有json解析类库,我们这里引入libjson进行解析 ...

  4. cocos2d-x-Json/XML文件

    数据存储几种方式 1. 数据库 2. 文件 3. 内存 这里介绍Json格式与XML格式的文件存储 常用的文件存储数据的格式 1. Json格式 2. XML格式 Json适合存储小数据,XML适合存 ...

  5. cocos2d-x高级学习

    弱联网开发技术: libcurl 添加lib文件:libcurl_imp.lib  pthreadVCE2.lib 添加头文件:#include"curl/curl.h" curl ...

  6. cocos2d-x游戏引擎核心之十——网络通信

    一.建立基本的http通信并得到返回信息 1.创建cocos2dx工程 2.项目引用外部库 如果要使用cocos2dx的CCHttpClient来进行网络访问,则需要引入cocos2dx的相关库,详细 ...

  7. (转载)使用curl 和 libjson 完成联网和数据解析

    转载地址:http://my.oschina.net/cocosgame/blog/71181 libjson 编译和使用 - 3. libjson的C接口 API http://blog.csdn. ...

  8. cocos2dx调用浏览器打开网址

    安卓端cocos2dx/platform/android路径下CCApplication.h: virtual void openURL(const char* pszUrl); CCApplicat ...

  9. 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...

随机推荐

  1. 为Fitnesse-20140630定制RestFixture代码

    摘要:Fitnesse插件RestFixture在最新版Fitnesse输出测试结果为html文本,而非html.本博文记录RestFixture定制代码的过程. 准备开发环境 假定你已经正确安装JD ...

  2. python easy_install centos 下安装过程和原理解析

    一.easy_install 安装过程 其安装过程有很多种,我也找了很多的例子,但是结果都不太好,以下方法的结果是不错的. easy_install与yum类似,使用easy_install,可以轻松 ...

  3. C++一些特殊的类的设计

      一.设计一个只能在栈上分配空间的类 重写类的opeator new 操作,并声明为private,一个大概的代码如下: class StackOnly { public: StackOnly(){ ...

  4. MYSQL里的索引类型介绍

    首先要明白索引(index)是在存储引擎(storage engine)层面实现的,而不是在server层面.不是所有的存储引擎支持有的索引类型. 1.B-TREE 最常见的索引类型,他的思想是所有的 ...

  5. Tkinter教程之Checkbutton篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811306 #Tkinter教程之Checkbutton篇#Checkbutton又称为多选按 ...

  6. 《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本

    1.Genesis-3D开源游戏引擎主要面向哪些用户人群?有限制吗? 1.我们的引擎没有限制,只要您想了解和使用我们的引擎,就可以加入Genesis-3D的大家庭.2.我们的主要用户群是各个相关的企业 ...

  7. SRM 501 DIV1 500pt(DP)

    题目简述 给定一个长度为n的序列,每个数值的范围为[-1,40],-1可以替换成0~40之间的数,要求你求出符合以下条件的序列有多少个? 1.每个数都是0~40之间的数 2.对于每一个数A[i],都需 ...

  8. 微服务、SOA 和 API:是敌是友?

    为一个正在不断发展的企业对比关键的集成与应用程序架构概念 对比微服务架构和面向服务的架构(SOA)是一个敏感的话题,常常引起激烈的争论.本文将介绍这些争论的起源,并分析如何以最佳方式解决它们.然后进一 ...

  9. 【现代程序设计】【homework-08】

    1. 理解C++变量的作用域和生命周期 #include<stdio.h> char * test() { ]="; return s; } main() { puts(test ...

  10. free 和 fclose

    想到一个场景,具体代码如下 #include <stdio.h> #include <stdlib.h> int main(int argc, const char *argv ...