锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源 / rapidjson、rapidjson开源、rapidjson编译错误、rapidjson非法操作和rapidjson源代码分析
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

rapidjson、rapidjson开源、rapidjson编译错误、rapidjson非法操作和rapidjson源代码分析


rapidjson

rapidjson是C++的json读写库,它虽然开源的,但是功能强大,能满足项目开发要求。VC++里使用rapidjson,包含头文件后就可以使用,我把头文件直接放到项目里使用,对#include语句还进行了处理,把<>包含改为了""包含,省去了在VC里指定包含目录的处理。

rapidjson的突出特点就是效率,在它的官网上有和其它开源项目的效率的对比表。在国外英文网站上也有对rapidjson的推荐。


rapidjson开源

因为前面用了jsoncpp,所以也想套用[]的使用方式,但是发现rapidjson没有,用的是函数为主的模式。国内网站上也有大把的基本用法代码,这里列举出一些我摸索出来的用法,贡献给大家。

//向json值里添加个属性,一参为分配器,二参为值,三参为属性名,四参为属性值
void AddRapidString(rapidjson::Document::AllocatorType& alc,rapidjson::Value &vin,std::string sname,std::string svalue)
{
// 	rapidjson::Value str_value(rapidjson::kStringType);
// 	str_value.SetString(svalue.c_str(), svalue.size());//以前用这段代码添加文本,但是实际加不上去,也处理不了中文

	//if(!str_value.IsNull())
	{
//一参的名称必须这么处理,不处理会有编译错误,属性名也加不进去
		vin.AddMember(rapidjson::Value(sname.c_str(), alc), svalue, alc);//把值变量放到二参,可以保存上,也可以处理中文
	}
}

添加属性、判断属性和获取属性值字符串代码

	AddRapidString(allocator,d,"we","虚");
if(d.HasMember("we"))
AfxMessageBox(_T("Yes"));
std::string swe=d["we"].GetString();

json编译错误

不能将参数 1 从“std::string”转换为“rapidjson::GenericValue<Encoding>,加RAPIDJSON_HAS_STDSTRING此宏解决 ,不过加了后,#if语句会报错,需要加上#if defined()来纠正。


rapidjson非法操作

Document不能直接AddMember,说不是Object。如果开始没用构造函数参数来指定对象类型,可以用SetObject()函数调用来指定成对象,这样就可以用AddMember了。


rapidjson源代码分析

用了大量的模板,一般人不容易看明白。

另外通过监视看它的变量,里面的成员也很奇怪,不能轻易明白成员的意思,总之觉得比jsoncpp还要复杂。

rapidjson开源社区

这里推出锐英源的国外内容翻译文章、rapidjson使用技巧和rapidjson代码理解文档,欢迎同行交流。

 
  
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内