terminate called after throwing an instance of ‘Json::LogicError‘ what(): Value is not convertible

使用c++ jsoncpp时报错如如下:

terminate called after throwing an instance of 'Json::LogicError' what(): Value is not convertible to float

原始代码行为

float size_x = root["Size"]["height"].asFloat();

之前int型加了判断如下

if  root["Size"]["height"].isInt();

int a =root["Size"]["height"].asInt()

但是float类型没有相关的asFloat()属性,将数据类型改为double,并进行判断isDouble(),报错解决,

后续查询相关资料得知,在尝试转换之前,先检查这个值是否是数字类型。JsonCpp提供了isNumeric()方法来检查一个值是否是数字(整数或浮点数):

if (yourJsonVariable.isNumeric()) {  
    double value = yourJsonVariable.asDouble(); 

总结:jsoncpp使用时如果进行类型转换需要先判断数据类型,方可转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值