C++中Json的用法(下)
来源:互联网 发布:大淘客cms建站教程 编辑:程序博客网 时间:2024/06/05 03:11
上一篇咱们写了,发送请求时,怎么去拼装Json串,那么相对的,客户端发过来的Json串,怎么去解析,这也是同样重要的。接下来咱们就看看该怎么解析Json。其实相当于拼装Json的逆运算。
同样的,在解析Json时,也会用到上一篇中提到的lib_json.lib这个库。
对于简单的Json,可以直接进行解析,如:
{
"status": "failed!",
"reason": "failed: request parameters is empty."
}
首先应该先建立一个Json::Reader reader;// 这个地方我理解为解析对象,也就是创建一个解析者
Json::Value valueRoot;// 在建立一个根节点
reader.parse(strResponseData, valueRoot);// 对其进行解析,将解析到valueRoot里面。接下来就是对valueRoot的解析:
valueRoot["errorCode"].asString();这样就是对字符串类型的取值,同样的有asInt(),asBool()等等。取出来的值就是自己想要的了(特殊编码方式需要做相应转换哦~)。
对于略复杂的Json结构:
{
"addResourceListResponse": [
{
"id": "911BCDCA-B272-4F52-B1F0-E476037716C6",
"success": false,
"description": "Parameter error: Can't not find object in DB!"
}
]
}
这种结构需要顶一个“中间变量”:Json::Value valueQueryResults = valueRoot["addResourceListResponse"];然后再对valueQueryResults进行解析。另外因为valueQueryResults是个数组,所以需要对他的每个元素都进行取值,因此可以写个循环~
for (int i=0; i<valueQueryResults.size(); ++i)
{
Json::Value valueQueryResult = valueQueryResults[i];
if (valueQueryResult["success"].asBool())
{
DEBUGOUTPUT_NORMAL_STATUS(_T("服务端返回成功!"));
return TRUE;
}
else
{
CString strErrMsg = TranslatestringToCStringByUnicode(valueQueryResult["description"].asString());
DEBUGOUTPUT_NORMAL_STATUS(_T("服务端返回失败!失败原因:") + strErrMsg);
return FALSE;
}
}
因为我对于这个结果只想知道是否成功,所以只需要取success的值,如果失败,获取失败描述~
看到上面的例子大家应该可以看明白了,其实只需要做好“中间的临时变量”的工作,就可以将复杂的结构拆解出来成为简单的结构,大家就会解析啦~
- C++中Json的用法(下)
- C++中Json的用法(上)
- C 语言 json 库的基本用法
- c中 ## 的用法
- javascript中的null 和 undefined 的用法(JSON中)
- 前后端交互中json的用法
- $.ajax中contentType: “application/json” 的用法
- $.ajax中contentType: “application/json” 的用法
- $.ajax中contentType: “application/json” 的用法
- $.ajax中contentType: “application/json” 的用法
- python中json模块的用法
- python中json模块的基础用法
- Python中JSON的基本用法
- JSON的用法(2)
- c环境下Json字符串的解析
- jquery中json用法
- JSTL中C标签的用法(三)C:SET
- C 中 sizeof的用法
- hdu 5963(找规律)
- Cyclic Nacklace(KMP + 最小循环串)
- Android 关闭硬件加速的问题
- 第十五篇:并发编程中实现内存可见的两种方法比较:加锁和volatile变量
- Java中字节流复制图片FileInputStream FileOutputStream
- C++中Json的用法(下)
- 《挖财编程题》水花仙数
- 一些Git命令
- 二维数组排序
- MySQL 开发实践 8 问,你能 hold 住几个?
- numpy: 常用api速查
- 删除Oracle数据库表中的数据
- ajax流程
- 置换元素与非置换元素