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
}
],
如果是多個數組,直接在第一步代碼中循環打包數組就好了