森クマblog

スマートフォン向けアプリ開発者の奮闘記

【Cocos2d-x】JSONをパースする

こんにちはです。

森でクマさんテラヤバス」には「妖精図鑑」という機能があります。
木立の中から覗いてくる可愛らしい妖精たち。
f:id:shakeflower93:20151121205319p:plain

彼らはJSONファイルで管理しています。例えばこんな感じ↓

{"fairyList":
    [
        {
            "id":"01",
            "name":"疾走するバジェドリアン",
            "donguri":300,
            "explain":"妖精の中で一番足が遅い。\nバジェドリアンが現れる時、\nプレイヤーのダッシュスピードを\n2倍にしない。",
            "img":"animal_corn.png"
        },
        {
            "id":"02",
            "name":"憂うウツボーヌ",
            "donguri":1100,
            "explain":"森林の減少を憂う妖精。\nクマさんの攻撃スピードを\n5秒間だけ0にしたいと\n思っている。",
            "img":"animal_pengin.png"
        }
    ]
}   

cocos2d-x(c++)では、JSONライブラリのrapidjsonを使って、JSONファイルを簡単に解析できます。

#include "json/rapidjson.h"
#include "json/document.h"

void GameManager::loatFairyList() {
    auto fileUtils = FileUtils::getInstance();
    auto str = fileUtils->getStringFromFile("fairy.json");

    rapidjson::Document doc;
    doc.Parse<rapidjson::kParseDefaultFlags>(str.c_str());
    if (!doc.HasParseError()) {
        const rapidjson::Value& fairyList = doc["fairyList"];
        for (rapidjson::SizeType i = 0; i < fairyList.Size(); i++) {
            auto fairy = Fairy::create();
            fairy->setName(fairyList[i]["name"].GetString());
            fairy->setDonguri(fairyList[i]["donguri"].GetInt());
            fairy->setExplain(fairyList[i]["explain"].GetString());
            fairy->setId(fairyList[i]["id"].GetString());
            fairy->setImg(fairyList[i]["img"].GetString());
            _fairyList.pushBack(fairy);
        }
    }
}

簡単~!!

ちなみに妖精たちは攻略上、何の役にも立ちません!(笑)


↓cocos2d-x ver3でアプリを作るときに愛読してます。