完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
在使用CJSON创建字符没有问题,但是创建数字是一直是显示0,代码如下:
/* * Create a json format data */ root = cJSON_CreateObject(); if (root == NULL) { os_printf("cJson create obj error!!n"); vTaskDelete(NULL); return; } cJSON_AddStringToObject(root,"msg_type","notify"); services = cJSON_CreateObject(); if (services == NULL) { os_printf("cjson create services error!!n"); vTaskDelete(NULL); cJSON_Delete(root); return; } cJSON_AddItemToObject(root,"services",services); ops = cJSON_CreateObject(); if (ops == NULL) { os_printf("cjson create ops error!!n"); vTaskDelete(NULL); cJSON_Delete(root); cJSON_Delete(services); return; } cJSON_AddItemToObject(services,"operation_status",ops); cJSON_AddNumberToObject(ops,"status",1L); li = cJSON_CreateObject(); if (li == NULL) { os_printf("cjson create ops error!!n"); vTaskDelete(NULL); cJSON_Delete(root); cJSON_Delete(services); cJSON_Delete(li); return; } cJSON_AddItemToObject(services,"lightbulb",li); cJSON_AddNumberToObject(li,"alpha",122L); cJSON_AddNumberToObject(li,"color_rgb",122L); cJSON_AddNumberToObject(li,"color_hsl",122L); jsonStr = cJSON_Print(root); os_printf("json data = %sn",jsonStr); 打印结果如下: json data = { "msg_type": "notify", "services": { "operation_status": { "status": 0 }, "lightbulb": { "alpha": 0, "color_rgb": 0, "color_hsl": 0 } } } 数字全部是0,请问这是怎么回事?用的SDK是ESP8266_RTOS_SDK-master.zip,是2016/2/20下载的 |
|
相关推荐
1个回答
|
|
|
从您提供的代码片段来看,您正在使用CJSON库创建一个JSON对象。然而,您没有展示如何添加数字类型的数据。让我们一步一步地分析问题并找出解决方案。
1. 首先,确保您已经正确地包含了CJSON库的头文件: ```c #include "cJSON.h" ``` 2. 接下来,创建一个JSON对象: ```c cJSON *root = cJSON_CreateObject(); if (root == NULL) { os_printf("cJson create obj error!!n"); } ``` 3. 现在,我们需要添加一个数字类型的数据。使用`cJSON_AddNumberToObject()`函数来添加数字: ```c cJSON *number_item = cJSON_CreateNumber(123); // 创建一个数字类型的JSON项,值为123 if (cJSON_AddItemToObject(root, "number_key", number_item) == NULL) { os_printf("Failed to add number item to the JSON objectn"); } ``` 4. 打印JSON对象,以确保数字已正确添加: ```c const char *json_string = cJSON_Print(root); os_printf("JSON string: %sn", json_string); cJSON_free(json_string); ``` 5. 最后,释放JSON对象: ```c cJSON_Delete(root); ``` 将以上代码片段整合到您的项目中,您应该能够看到数字类型的数据被正确添加到JSON对象中。如果您仍然遇到问题,请检查CJSON库是否已正确安装和链接到您的项目中。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
453 浏览 0 评论
975 浏览 0 评论
1700 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1357 浏览 1 评论
1248 浏览 1 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1272浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
941浏览 3评论
2371浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2556浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1066浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 11:32 , Processed in 0.591945 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
652
