rapidjson 的格式检查
使用了一段時間rapidjson 庫,經常會遇到程序退出(crashed)的現象,主要是沒有做好解析過程中的出錯處理。本文談談這方面的問題。
parse 后判是否出錯
使用HasParseError()方法,例如:
#include "rapidjson/document.h"
#include "rapidjson/error/en.h"
?
Document d;
d.Parse(json);
if (d.HasParseError()) {
??? fprintf(stderr, "\nError(offset %u): %s\n",
??????? (unsigned)d.GetErrorOffset(),
?????? ?GetParseError_En(d.GetParseError()));
??? // ...
}
?
取值先判類型,
在 GetX 之前,要判斷IsX
例如
?if(d[“id”].isInt())
???? int id=? d[“id”].GetInt();
取元素先判是否存在
使用hasmember()。
例如:
if (d.HasMember(“id”)
{
?if(d[“id”].isInt())
???? int id=? d[“id”].GetInt();
}
?
?
對象的判斷(IsObject() )
例如:
{“name”:”david”}sdsd
這樣的字符串
使用HasParseError()方法無發查出錯誤,程序直接崩潰!
要 req.IsObject() 來判斷字符串是否是一個完整的對象。
要做出一個萬無一失的檢查程序還比較麻煩的。
?
總結
以上是生活随笔為你收集整理的rapidjson 的格式检查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用 python 实现FFT,绘制频谱图
- 下一篇: 【Nginx】Nginx服务器之负载均衡