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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章