|
//函数一 这里为获取jsonvalue的值
CSJson::Value HelloWorld::getJsonFromFile(
const
char
* fileName){
CSJson::Reader reader;
CSJson::Value jsValue;
unsigned
long
ilength;
//这里是将文件解析出来,付给pBuffer字符串(之前自己没接触过 没写这句搞得很头痛....)
char
* pBuffer = (
char
*)CCFileUtils::sharedFileUtils()->getFileData(getFullP
ath(fileName).c_str(),
"r"
, &ilength);
CCLog(
"%s"
,pBuffer);
//这里将pBuffer的值付给jsValue值
bool parseRet = reader.parse(pBuffer, jsValue,
false
);
CCAssert(parseRet,
"Read GridData Error~!!!!!!!!!"
);
return
jsValue;
}
//函数二 这里为获取资源路径
std::string HelloWorld::getFullPath(
const
char
* path)
{
CCLOG(cocos2d::CCFileUtils::sharedFileUtils()->fullPathForFilename(path).c_str());
return
cocos2d::CCFileUtils::sharedFileUtils()->fullPathForFilename(path);
}
|
CSJson::Reader read;
CSJson::Value myjson = getJsonFromFile(
"jsontest.json"
);
//利用上面的函数生成一个json。
string name;
int
i=
0
;
//这里为遍历整个jsonvalue的值
for
(CSJson::ValueIterator a=myjson.begin(); a!=myjson.end(); ++a) {
CSJson::Value value=(CSJson::Value)*a;
name=value[
"name"
].asString();
CCLOG(
"myjson:%s"
,name.c_str());
CCLOG(
"leftBottom:%s"
,value[
"leftBottom"
].asCString());
CCLOG(
"leftTop:%s"
,value[
"leftTop"
].asCString());
CCLOG(
"rightBottom:%s"
,value[
"rightBottom"
].asCString());
CCLOG(
"rightTop:%s"
,value[
"rightTop"
].asCString());
CCLOG(
"position:%s"
,value[
"position"
].asCString());
//两种打印方式,可以选择上面字符是我的字段
name=myjson[i][
"name"
].asString();
CCLOG(
"myjson:%s"
,name.c_str());
CCLOG(
"leftBottom:%s"
,myjson[i][
"leftBottom"
].asCString());
CCLOG(
"leftTop:%s"
,myjson[i][
"leftTop"
].asCString());
CCLOG(
"rightBottom:%s"
,myjson[i][
"rightBottom"
].asCString());
CCLOG(
"rightTop:%s"
,myjson[i][
"rightTop"
].asCString());
CCLOG(
"position:%s"
,myjson[i][
"position"
].asCString());
i++;
}
以下json介绍:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。 ————>JavaScript 有时间看下。。。。
JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
-
数据在名称/值对中
-
数据由逗号分隔
-
花括号保存对象
-
方括号保存数组
JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
|
"firstName":"John"
|
这很容易理解,等价于这条 JavaScript 语句:
|
firstName="John"
|
JSON 值
JSON 值可以是:
-
数字(整数或浮点数)
-
字符串(在双引号中)
-
逻辑值(true 或 false)
-
数组(在方括号中)
-
对象(在花括号中)
-
null
基础示例
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
名称 / 值对
按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":
|
{"firstName":"Brett"}
|
这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间:
|
firstName=Brett
|
但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:
|
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
|
从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。