W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
CrossApp使用lib_json來解析json文件。lib_json已經(jīng)加入了libExtensions下,我們在CrossApp中使用非常的便捷。
首先引入頭文件
#include "CrossAppExt.h"
using namespace CSJson;
我們先熟悉一下幾個類名和函數(shù)
/*
Value:寫過腳本、弱語言的童鞋應該很清楚var,其他Value 和var一個道理,都是可以表示很多數(shù)據(jù)類型的數(shù)據(jù)類型。
這話可能比較繞,簡單說就是Value你可以理解可以是int 也可以是string 也可以是其他數(shù)據(jù)類型。
當然定義 Value value,只是個定義,還沒有決定其數(shù)據(jù)類型,如果你Value value =10;那么value 就是個整型
在用于JSON時,我們常表示為一個map,其中包括 key-value,鍵值對
其中Value 中包括一些將其轉為基礎數(shù)據(jù)類型的6個方法,如下:
value.asCString();
value.asString();
value.asBool();
value.asDouble();
value.asInt();
value.asUInt();
*/
Value map;
/*
FastWriter:起作用是將Value數(shù)據(jù)編碼成JSON格式的數(shù)據(jù)
常用函數(shù):write(<#const Json::Value &root#>)
*/
Json::FastWriter write;
/*
Value:作用與FastWriter相反,是將JSON格式的數(shù)據(jù)解析成一個Value
常用函數(shù): reader.parse(<#std::istream &is#>, <#Json::Value &root#>)
*/
Json::Reader reader;
通過上面的注釋,我們可以很清楚的了解函數(shù)的意義。下面我們開始生成Json數(shù)據(jù)和解析Json數(shù)據(jù)。
Json數(shù)據(jù)生成
//先定義數(shù)據(jù)
Value map;
map["name"] = "9miao";
map["password"] = "123456";
map["Email"] = "9miao@longtugame.com";
map["PHONE"] = 10086;
//編碼成json數(shù)據(jù)
FastWriter write;
string jsonData = write.write(map);
//打印結果
CCLog("jsonData:%s", jsonData.c_str());
上面的打印結果:
jsonData:{"Email":"9miao@longtugame.com","PHONE":10086,"name":"9miao","password":"123456"}
Json數(shù)據(jù)解析
有時候我們需要解析Resources目錄下的json文件,首先我們就需要將json文件拷貝到Resources目錄下。我們將下面的Json格式文件拷貝到Resources目錄下命名為info.json.
{ "info": [ {"name":"aaa","num":"0001"}, {"name":"bbb","num":"0002"}, {"name":"ccc","num":"0003"}, {"name":"ddd","num":"0004"}, {"name":"eee","num":"0005"}, {"name":"fff","num":"0006"}, {"name":"ggg","num":"0007"}, {"name":"hhh","num":"0008"}, {"name":"iii","num":"0009"}, {"name":"jjj","num":"0010"}, {"name":"kkk","num":"0011"}, {"name":"lll","num":"0012"}, {"name":"mmm","num":"0013"}, {"name":"nnn","num":"0014"}, {"name":"ooo","num":"0015"}, {"name":"ppp","num":"0016"} ], "gender": "male", "occupation": "coder"}
Reader reader;
//定義Valuer
Value value;
//json文件路徑
string jsonFile = CCFileUtils::sharedFileUtils()->fullPathForFilename("info.json");
//將文件生成CCString對象
CCString* json = CCString::createWithContentsOfFile(jsonFile.c_str());
//將數(shù)據(jù)解析到value中
if (reader.parse(json->getCString(),value))
{
int length = value["info"].size();
//循環(huán)解析子節(jié)點
for (int index = 0; index < length; index++)
{
std::string name = value["info"][index]["name"].asString();
std::string num = value["info"][index]["num"].asString();
CCLog("name:%s", name.c_str());
CCLog("num:%s", num.c_str());
}
//獲取方式一
Value valueGender;
valueGender = value.get("gender", valueGender);
std::string gender = valueGender.asCString();
//獲取方式二
std::string occupation = value["occupation"].asCString();
CCLog("gender:%s", gender.c_str());
CCLog("occupation:%s", occupation.c_str());
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: