在cocos2d中讀取json數(shù)據(jù)是非常常見的操作。下面我們來介紹一下如何使用cocos2d讀取json數(shù)據(jù)。
首先,我們需要加載json文件。在cocos2d中,我們可以使用CCFileUtils::getInstance()->getStringFromFile方法加載json文件。
std::string jsonStr = FileUtils::getInstance()->getStringFromFile("test.json");
然后,我們需要使用jsoncpp庫來解析json數(shù)據(jù)。cocos2d已經(jīng)集成了jsoncpp庫,我們只需要使用cocos2d::utils::json解析json數(shù)據(jù),就可以得到想要的結(jié)果。
rapidjson::Document document; document.Parse<0>(jsonStr.c_str()); if (document.HasParseError()) { CCLOG("GetParseError %u\n", document.GetParseError()); return; } if (document.IsObject()) { const rapidjson::Value& data = document["data"]; if (data.IsArray()) { for (int i = 0; i< data.Size(); i++) { const rapidjson::Value& item = data[i]; int id = item["id"].GetInt(); std::string name = item["name"].GetString(); float price = item["price"].GetFloat(); CCLOG("id:%d name:%s price:%f", id, name.c_str(), price); } } }
上面的代碼中,我們首先調(diào)用了document.Parse方法將json數(shù)據(jù)解析出來。然后判斷是否有解析錯誤,如果有錯誤則返回。接下來我們判斷json數(shù)據(jù)是否是一個object類型,如果是則獲取data數(shù)組,并遍歷data數(shù)組中的數(shù)據(jù)。對于每個數(shù)據(jù)項,我們可以使用item["key"].getType()的方式獲取其中每個key對應(yīng)的value。在本例中,我們獲取了id、name和price三個key對應(yīng)的value。
最后,我們可以在控制臺中輸出得到的結(jié)果。
以上就是使用cocos2d讀取json數(shù)據(jù)的方法和技巧。希望對大家有所幫助。