测试的data.json文件的内容如下:
[{"name":"zhangsan", "age":20}, {"name":"lisi", "age":30}]
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
USING_NS_CC;
class HelloWorld : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
void readJsonByCocosAPI();
CREATE_FUNC(HelloWorld);
private:
LabelTTF *pLabel;
};
#endif // __HELLOWORLD_SCENE_H__
#include "HelloWorldScene.h"
#include "json/document.h"
Scene* HelloWorld::createScene()
{
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
pLabel = LabelTTF::create("", "Arial", 30);
pLabel->setPosition(visibleSize/2.0);
this->addChild(pLabel);
this->readJsonByCocosAPI();
return true;
}
void HelloWorld::readJsonByCocosAPI()
{
rapidjson::Document doc;
doc.Parse<0>(FileUtils::getInstance()->getStringFromFile("data.json").c_str());
// 获得第一个对象的name和age的属性
int index = 0;
const char *ch = doc[index]["name"].GetString();
int iage = doc[index]["age"].GetInt();
std::ostringstream str;
str << "name:";
str << ch;
str << ",";
str << "age:";
str << iage;
pLabel->setString(str.str());
// 遍历json数组
for (int i = 0; i < doc.Size(); i ++)
{
const char *name= doc[i]["name"].GetString();
int age = doc[i]["age"].GetInt();
log("name:%s, age:%d", name, age);
}
}