开发环境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2,rt-thread版本为4.1.1,cjson软件包使用的版本是latest。

使用过程如下,获取当前时钟的时间戳,如果使用的是秒级数字的话,测试部分代码如下:

cJSON_AddLongLongToObject(cjson_root, "timestamp", (long)tv.tv_sec);

此时是正常的。转换工具测试也是正常的如下:

c26f44870547189347b573d80efd1fe1.png

如果使用毫秒级的时间戳,转换工具测试是正常的,如下:

7f9c7e588476e8486882e774d1d60fb2.png

修改成如下代码:

cJSON_AddLongLongToObject(cjson_root, "timestamp", (long)tv.tv_sec*1000);

测试发现时间戳是负值,溢出了。搜索发现cjson库不支持64位,如果需要支持64位的话,需要自己修改代码。搜索之后发现了一篇文章,参考网址如下:

https://blog.csdn.net/zh7152106/article/details/115506265

根据说明修改cjson相关文件即可。

测试结果如下:

a575ef3ddec2b90169c788640182adca.png

可以看到,打印的时间戳不在是负值而是正常值。

GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:2 个月前 )
424ce4ce This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6. Related to #860 4 个月前
32497300 - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐