当前位置:K88软件开发文章中心编程语言APP编程CrossApp → 文章内容

json解析

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-23 13:52:46

由 ?﹏???ζ???﹏﹏? 创建, 最后一次修改 2016-09-08 CrossApp使用lib_json来解析json文件。lib_json已经加入了libExtensions下,我们在CrossApp中使用非常的便捷。首先引入头文件#include "CrossAppExt.h"using namespace CSJson;我们先熟悉一下几个类名和函数 /* Value:写过脚本、弱语言的童鞋应该很清楚var,其他Value 和var一个道理,都是可以表示很多数据类型的数据类型。 这话可能比较绕,简单说就是Value你可以理解可以是int 也可以是string 也可以是其他数据类型。 当然定义 Value value,只是个定义,还没有决定其数据类型,如果你Value value =10;那么value 就是个整型 在用于JSON时,我们常表示为一个map,其中包括 key-value,键值对 其中Value 中包括一些将其转为基础数据类型的6个方法,如下: value.asCString(); value.asString(); value.asBool(); value.asDouble(); value.asInt(); value.asUInt(); */ Value map; /* FastWriter:起作用是将Value数据编码成JSON格式的数据 常用函数:write(<#const Json::Value &root#>) */ Json::FastWriter write; /* Value:作用与FastWriter相反,是将JSON格式的数据解析成一个Value 常用函数: reader.parse(<#std::istream &is#>, <#Json::Value &root#>) */ Json::Reader reader;通过上面的注释,我们可以很清楚的了解函数的意义。下面我们开始生成Json数据和解析Json数据。Json数据生成//先定义数据 Value map; map["name"] = "9miao"; map["password"] = "123456"; map["Email"] = "9miao@longtugame.com"; map["PHONE"] = 10086; //编码成json数据 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数据解析有时候我们需要解析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()); //将数据解析到value中 if (reader.parse(json->getCString(),value)) { int length = value["info"].size(); //循环解析子节点 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()); }

json解析