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
}
],
如果是多个数组,直接在第一步代码中循环打包数组就好了