文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。
资料仅供学习交流使用。
作者:Aliven888
演示样例环境
编译环境:vs 2015 + Qt_5.9.6 x86 Release
开发环境:windows 7
Json开源库:JsonCpp (获取路径:https://sourceforge.net/projects/jsoncpp/)
演示样例
/*****************************************************
* 功 能 : Json 工具库 演示函数
*
* 返回值:void
*
* 参 数:无
*
* 说 明:无
*
* 时 间:2020-08-02
*
* 作 者:Aliven888
*****************************************************/
void QtGuiApplication::onTestJsonAction()
{
qDebug("Json show... ");
do
{
//生成json
Json::Value JsonValue;
Json::Value JsonUtil;
//赋值 常用数据类型
JsonValue["sting"] = "string";
JsonValue["bool"] = true;
JsonValue["int"] = 1;
JsonValue["double"] = 1.2;
//添加列表
JsonUtil["a"] = "a";
JsonUtil["b"] = "b";
JsonValue["data"].append(JsonUtil);
JsonUtil.clear(); //清理缓存
JsonUtil["a"] = "c";
JsonUtil["b"] = "d";
JsonValue["data"].append(JsonUtil);
//Qt 打印
qDebug("current json is [%s]", JsonValue.toStyledString().c_str());
//解析json
std::string strJson = JsonValue.toStyledString().c_str();
Json::Reader read;
Json::Value Json1;
if (!read.parse(strJson, Json1, true))
{
qDebug("parse json is err [%s]", strJson.c_str());
break;
}
//取值 常用数据类型
std::string strValue = JsonValue["sting"].asString();
bool bValue = JsonValue["bool"].asBool();
int iValue = JsonValue["int"].asInt();
double dbValue = JsonValue["double"].asDouble();
//遍历列表
Json::Value::iterator begin = JsonValue["data"].begin();
Json::Value::iterator end = JsonValue["data"].end();
for (int i = 0; begin != end; ++begin,++i)
{
//使用索引 i 访问
//qDebug("current value is [%s]", JsonValue["data"][i]["a"].asString().c_str());
//qDebug("current value is [%s]", JsonValue["data"][i]["b"].asString().c_str());
//使用迭代器访问
JsonUtil.clear();
JsonUtil = *begin;
//参打印
qDebug("current value is [%s]", JsonUtil["a"].asString().c_str());
qDebug("current value is [%s]", JsonUtil["b"].asString().c_str());
}
} while (0);
}
网友评论