服务器开发—自己封装一个c++JSONObject工具类

这个工具类可能还不完善,也是将jsoncpp简单的封装,老鸟可以直接飘过了

用该类,首先要到网上下载jsoncpp(网上一搜就有了),解压后,将include/json文件夹放到系统有include的地方,比如我是在放在/usr/local/include/下

然后将lib_json复制到项目适当目录

好了,直接上代码:

JSONObject.h

/*
 * JSONObject.h
 *
 *  Created on: 2012-10-20
 *      Author: root
 */

#ifndef JSONOBJECT_H_
#define JSONOBJECT_H_
#include <json/json.h>
namespace util {

class JSONObject {
public:
	JSONObject(std::string jsondata);
	virtual ~JSONObject();

	int getInt(std::string key);
	double getDouble(std::string key);
	bool getBool(std::string key);
	std::string getString(std::string key);

private:
	Json::Reader _reader;
	Json::Value _value;


};

} /* namespace util */
#endif /* JSONOBJECT_H_ */

JSONObject.cpp

/*
 * JSONObject.cpp
 *
 *  Created on: 2012-10-20
 *      Author: root
 */

#include "JSONObject.h"
#include "../base/Exception.h"

namespace util {
using namespace base;

JSONObject::JSONObject(std::string jsondata) {

	if (!_reader.parse(jsondata, _value)) {
		throw Exception("jsondata format is error!");
	}
}

JSONObject::~JSONObject() {
	// TODO Auto-generated destructor stub
}

std::string JSONObject::getString(std::string key){
	return _value[key].asString();
}

int JSONObject::getInt(std::string key){
	if(_value[key].isInt() || _value[key].isDouble()){
		return _value[key].asInt();
	}
	return 0;
}

double JSONObject::getDouble(std::string key){
	if(_value[key].isInt() || _value[key].isDouble()){
			return _value[key].asDouble();
		}
		return 0.0;
}

bool JSONObject::getBool(std::string key){
	if(_value[key].isBool()){
		return _value[key].asBool();
	}
	return false;
}

} /* namespace util */

该类只是做简单的处理,其实该类到今后会有很大作用,可以作各种序列化json数据用,不明白的同学可以去了解下gson(java的),可以将任意对象转化成json数据,反过来也一样可以,同进还支持各种过滤,真是方便 吐舌头


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值