完善资料让更多小伙伴认识你,还能领取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库是否已正确安装和链接到您的项目中。 |
|
|
|
只有小组成员才能发言,加入小组>>
444浏览 6评论
375浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
356浏览 5评论
360浏览 4评论
338浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-12 02:16 , Processed in 0.729848 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191