JSONCPP操作帮助

来源:互联网 发布:lcd1602只亮不显示数据 编辑:程序博客网 时间:2024/05/19 03:42

JSONCPP解析时比较麻烦,要判这判那的,于是直接简单封装了一个helper,如果要想面向对象可以直接改成类的静态成员。

jsoncpp_helper.h

#pragma once#if( defined(WIN32) || defined(WIN64) )#include "jsoncpp/include/json/json.h"#else#include "jsoncpp/json/json.h"#endif#include <string>bool _TrimJsonValueString(Json::Value &Root, const char* pszNodeName, std::string& strOut);bool _TrimJsonValueInt(Json::Value &Root, const char* pszNodeName, int& nOut, bool bFromString = false);bool _TrimJsonValueUint(Json::Value &Root, const char* pszNodeName, unsigned int& nOut, bool bFromString = false);bool _TrimJsonValueInt64(Json::Value &Root, const char* pszNodeName, int64_t& nOut);bool _TrimJsonValueUint64(Json::Value &Root, const char* pszNodeName, uint64_t& nOut);
jsoncpp_helper.cpp:

#include "jsoncpp_helper.h"bool _TrimJsonValueString(Json::Value &Root, const char* pszNodeName, std::string& strOut){if (Root.isMember(pszNodeName) && !Root[pszNodeName].isNull() && Root[pszNodeName].isString()){strOut = Root[pszNodeName].asString();return true;}return false;}bool _TrimJsonValueInt(Json::Value &Root, const char* pszNodeName, int& nOut, bool bFromString){if (bFromString){std::string strTmp;if (!_TrimJsonValueString(Root, pszNodeName, strTmp)) return false;nOut = atoi(strTmp.c_str());return true;}if (Root.isMember(pszNodeName) && !Root[pszNodeName].isNull() && Root[pszNodeName].isInt()){nOut = Root[pszNodeName].asInt();return true;}return false;}bool _TrimJsonValueUint(Json::Value &Root, const char* pszNodeName, unsigned int& nOut, bool bFromString){if (bFromString){std::string strTmp;if (!_TrimJsonValueString(Root, pszNodeName, strTmp)) return false;nOut = atoi(strTmp.c_str());return true;}if (Root.isMember(pszNodeName) && !Root[pszNodeName].isNull() && Root[pszNodeName].isInt()){nOut = Root[pszNodeName].asInt();return true;}return false;}bool _TrimJsonValueInt64(Json::Value &Root, const char* pszNodeName, int64_t& nOut){std::string strTmp;if (!_TrimJsonValueString(Root, pszNodeName, strTmp)) return false;nOut = atoll(strTmp.c_str());return true;}bool _TrimJsonValueUint64(Json::Value &Root, const char* pszNodeName, uint64_t& nOut){std::string strTmp;if (!_TrimJsonValueString(Root, pszNodeName, strTmp)) return false;nOut = atoll(strTmp.c_str());return true;}



0 0