Closed yuhc2019 closed 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)段需要调整;
fixed
感谢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)段需要调整;