cjson打包数组

 cJSON *timerJsonArry=cJSON_CreateArray();

先创建一组数组,

            cJSON *ArrayItem = cJSON_CreateObject();

            cJSON_AddNumberToObject(ArrayItem, "enable",   g_system_data.device_state.mqtt_timer_array.enable);   
            cJSON_AddNumberToObject(ArrayItem, "type",   g_system_data.device_state.mqtt_timer_array.mqtt_timer[i].type); 
            cJSON_AddNumberToObject(ArrayItem, "hour",   g_system_data.device_state.mqtt_timer_array.mqtt_timer[i].openHour); 
            cJSON_AddNumberToObject(ArrayItem, "minute",   g_system_data.device_state.mqtt_timer_array.mqtt_timer[i].openMin);    
            cJSON_AddNumberToObject(ArrayItem, "repeat",   g_system_data.device_state.mqtt_timer_array.mqtt_timer[i].repeat); 

    	    cJSON_AddItemToArray(timerJsonArry,ArrayItem);

            cJSON_AddItemToObject(timerJSObject, "timer", timerJsonArry);


再创建一个对象,再从对象中添加数据,最后再把对象添加到数组中,然后再打包进“timer”字段

            iot_json = cJSON_PrintUnformatted(IOTJSObject);  
            sprintf(package_msg, "%s", iot_json);
            //Ihoment_printf(IHOMENT_ALWAYS, "pack:%s\n", package_msg);
            printf( "mqtt json pack:%s\n", package_msg);
            vPortFree(iot_json);
            cJSON_Delete(IOTJSObject);

然后把打包的字段凭借起来转换为字符串形式,打印出来,最后释放内存

打包的数组大概是这样

    "timer":[
      {
        "enable":0/1,
        "type":0/1, 
        "hour":0, 
        "minute":23,
        "repeat":1  
      }
    ],

如果是多个数组,直接在第一步代码中循环打包数组就好了

发布了37 篇原创文章 · 获赞 15 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章