jsoncpp库使用中遇到的问题

一、解析时未使用严格模式,抛出异常
通常各种博文里给的示例都是这种:

	std::string strJson="{\"123\":123}";
	Json::Reader Reader;
	Json::Value Value;
	if(false == Reader.parse(strJson,Value))
	{
		return false;
	}
	.....

一般情况下解析不会出错,但是部分非json格式数据,如“{“123”:123}}}”,在这种写法下,不会返回错误,能继续运行,在后续使用Value时会抛空指针异常。应该改为以下方式:

	std::string strJson="{\"123\":123}";
	Json::Reader Reader(Json::Features::strictMode());
	Json::Value Value;
	if(false == Reader.parse(strJson,Value))
	{
		return false;
	}
	.....

2、数组中加入对象抛异常
在添加json数据时,需要注意当 Json::Value 属性为数组时,即调用 isArray() 函数成功,此时添加整形、浮点型、bool、string类型数据会抛异常,需要提前进行判断:

	std::string strValue,strJson ;
	....
	if(WVaule.isArray() == false)//数组中加入对象会抛异常
	{
		WVaule[strName] = strValue;
	}
    else
        return false;
	Json::FastWriter fast_writer;
	strJson = fast_writer.write(WVaule);
	.....
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值