使用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使用时如果进行类型转换需要先判断数据类型,方可转换