rtthread最新版的cjson软件包打印构建好的数据是NULL?

发布于 2021-05-01 10:20:02

rtthread最新版的cjson软件包打印构建好的数据是NULL,用1.0.2版却能打印出来是什么原因?

void nrf24l01_send_thread_entery(void *paramate)
{
    struct data_struct value;
    time_t now;
    struct tm *ptim;
    cJSON *root=RT_NULL;
    cJSON *root_body_data=RT_NULL;
    cJSON *root_body_time=RT_NULL;
    while(1)
    {
        rt_mq_recv(data_mq2, (rt_ubase_t*)&value, sizeof(value),RT_WAITING_FOREVER);
        /* 获取时间 */
        now = time(RT_NULL);
        ptim=gmtime((const time_t*) &now);
        //开始Cjson组包
        root=cJSON_CreateObject();
        if(!root)
        {
            LOG_W("malloc root cjson failed!");
            goto _exit;
        }
        root_body_data=cJSON_CreateObject();
        if(!root_body_data)
        {
            LOG_W("malloc root_body_data cjson failed!");
            goto _exit;
        }
        root_body_time=cJSON_CreateObject();
        if(!root_body_time)
        {
            LOG_W("malloc root_body_time cjson failed!");
            goto _exit;
        }
        cJSON_AddStringToObject(root, "name","node1");
        cJSON_AddItemToObject(root, "data", root_body_data);
        cJSON_AddNumberToObject(root_body_data, "soil_humi", value.data_adc.soli_humi_adc);
        cJSON_AddNumberToObject(root_body_data, "light_adc", value.data_adc.light_adc);
        cJSON_AddNumberToObject(root_body_data, "air_humi", value.data_dht11.humi);
        cJSON_AddNumberToObject(root_body_data, "air_temp", value.data_dht11.temp);

        cJSON_AddItemToObject(root, "time", root_body_time);
        cJSON_AddNumberToObject(root_body_time, "time_hour", ptim->tm_hour);
        cJSON_AddNumberToObject(root_body_time, "time_min", ptim->tm_min);
        cJSON_AddNumberToObject(root_body_time, "time_sec", ptim->tm_sec);

        rt_kprintf("data:%s\r\n",cJSON_Print(root));


        _exit:
            if(root)
            {
                cJSON_Delete(root);
            }
        rt_thread_mdelay(1000);
    }
}

1.0.2
612dd1c30d677cc04d9eda356879abe6.jpg

latest
27c111bd84121e0940c3c06c2dd208b4.jpg

查看更多

关注者
0
被浏览
76
3 个回答
flashman2002
flashman2002 2021-05-01

请你单步调试,一步一步观察,应该很容易找到问题的。

cxhxy12345
cxhxy12345 2021-05-01

可能是放置的顺序有问题。

/*创建一个JSON对象  */
root=cJSON_CreateObject();
/*添加一个字符串的JSON节点  */
cJSON_AddStringToObject(root, "name","node1");
/*添加一个嵌套的JSON节点  */
root_body_data=cJSON_CreateObject();
cJSON_AddNumberToObject(root_body_data, "soil_humi", value.data_adc.soli_humi_adc);
...
cJSON_AddItemToObject(root, "data", root_body_data);
.....
/*添加一个嵌套的JSON节点  */
root_body_time=cJSON_CreateObject();
JSON_AddNumberToObject(root_body_time, "time_hour", ptim->tm_hour);
...
JSON_AddItemToObject(root, "time", root_body_time);

将cJSON_AddItemToObject放在后面试下

mysterywolf
mysterywolf 2 days ago

cjson最新的软件包是我在更新,你尝试一下用官方原装的最新版试试 如果官方也是同样的问题,那是官方的问题,如果官方最新的不出现这个问题,是我同步的时候可能出问题了。https://github.com/DaveGamble/cJSON 加我微信:13021602891

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览