json解析
编辑教程json解析
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());
}
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟