W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
CrossApp使用lib_json來解析json文件。lib_json已經(jīng)加入了libExtensions下,我們?cè)贑rossApp中使用非常的便捷。
首先引入頭文件
#include "CrossAppExt.h"
using namespace CSJson;
我們先熟悉一下幾個(gè)類名和函數(shù)
/*
Value:寫過腳本、弱語言的童鞋應(yīng)該很清楚var,其他Value 和var一個(gè)道理,都是可以表示很多數(shù)據(jù)類型的數(shù)據(jù)類型。
這話可能比較繞,簡(jiǎn)單說就是Value你可以理解可以是int 也可以是string 也可以是其他數(shù)據(jù)類型。
當(dāng)然定義 Value value,只是個(gè)定義,還沒有決定其數(shù)據(jù)類型,如果你Value value =10;那么value 就是個(gè)整型
在用于JSON時(shí),我們常表示為一個(gè)map,其中包括 key-value,鍵值對(duì)
其中Value 中包括一些將其轉(zhuǎn)為基礎(chǔ)數(shù)據(jù)類型的6個(gè)方法,如下:
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ù)解析成一個(gè)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);
//打印結(jié)果
CCLog("jsonData:%s", jsonData.c_str());
上面的打印結(jié)果:
jsonData:{"Email":"9miao@longtugame.com","PHONE":10086,"name":"9miao","password":"123456"}
Json數(shù)據(jù)解析
有時(shí)候我們需要解析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對(duì)象
CCString* json = CCString::createWithContentsOfFile(jsonFile.c_str());
//將數(shù)據(jù)解析到value中
if (reader.parse(json->getCString(),value))
{
int length = value["info"].size();
//循環(huán)解析子節(jié)點(diǎn)
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號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: