Bwar / CJsonObject

Ultralightweight JSON parser in C++ based on cJSON
MIT License
648 stars 239 forks source link

负整数问题,修复不完全,double,float读取还是有问题 #14

Closed yuhc2019 closed 4 years ago

yuhc2019 commented 4 years ago

感谢bwarliao提供了这么好的封装,在应用过程中遇到的问题,自己微调了下,看能不能采纳。 注意到对出现的负整数问题进行了修复(转换字符串时加了“.”,Get系列方法修改),如果mqtt消息通信双方都用本库没问题,但和第3方交互时,可能会遇到没有“.”的情况。 在else if (pJsonStruct->type == cJSON_Int)强制转换类型段微调下可以解决问题: bool CJsonObject::Get(int iWhich, double& dValue) const { 。。。。。。。。 if (pJsonStruct->type == cJSON_Double) { dValue = pJsonStruct->valuedouble; return(true); } else if (pJsonStruct->type == cJSON_Int) { dValue = (int64)(pJsonStruct->valueint); return(true); } return(false); } 原代码 dValue = (double)(pJsonStruct->valueint); 导致读取错误,float的也是同样问题,需要使用(int32)转换。 getfloat,getdouble系列4个函数if (pJsonStruct->type == cJSON_Int)段需要调整;

Bwar commented 4 years ago

fixed