18年选择WIFI模组时在W600和ESP8266间比较,当时基于资料、加密和价格使用了W600。
今年开始W600逐步缺货,价格上涨, 无奈开始切换到ESP8266,
今天在调试cJson时发现使用cJSON_AddNumberToObject添加数字时,最终生成为NULL,其他没问题。

芯片:ESP8266
SDK: V3.4

第一种解决方法(修改Newlib):
make menuconfig > Component config > Newlib > [ ] Enable 'nano' formatting options for printf/scanf family 取消此项选择
此方法网上查找到,未确认, 考虑会增加代码体积,就没有使用此方法。

第二种解决方法(修改cJson源码):
通过逐层代码查找,cJSON_Print > print > print_value > print_number
这个函数中,使用的是double d = item->valuedouble; 进行处理判断,
因为我的应用不使用浮点数,所以直接改成使用 item->valueint 进行判断。

cJSON代码修改.PNG