cgic解析传递对象数组
传递数据结构如下:
data:[
{
start:1,
end:2,
topic:"topic1",
label:"label1",
length:2,
enum:[
{
value:1,
text:"关"
},
{
value:2,
text:"开"
}
]
},{
start:1,
end:2,
topic:"topic2",
label:"label2",
length:2,
enum:[
{
value:1,
text:"关"
},
{
value:2,
text:"开"
}
]
}
],
length:2
前端通过POST传递的形式如下:
$.ajax({
type: "POST",
data: {
data:[
{
start:1,
end:2,
topic:"topic1",
label:"label1",
length:2,
enum:[
{
value:1,
text:"关"
},
{
value:2,
text:"开"
}
]
},{
start:1,
end:2,
topic:"topic2",
label:"label2",
length:2,
enum:[
{
value:1,
text:"关"
},
{
value:2,
text:"开"
}
]
}],
length:2
},
url: "./cgi/tt.cgi",
success: function (data) {
console.log(data)
}
});
/**
* @brief 解析 标准的post请求的enum 部分
* @note
*
* @param enum_item_arr 输出参数 承载解析完成的枚举数组
* @retval
*/
int32_t rwg_parse_enum(cJSON *enum_item_arr){
uint32_t length;
uint32_t i;
uint32_t j;
uint32_t enum_len;
uint32_t start;
uint32_t end;
char key[256];
char value[256];
cgiFormResultType cgi_form_result;
cJSON *item;
cJSON *enum_arr;
cJSON *enum_item;
cgi_form_result = cgiFormInteger("length",&length,0);
if (cgi_form_result != cgiFormSuccess){
rwg_write_log("length reception failed,identification code:%d\n",cgi_form_result);
return -1;
}
rwg_write_log("length :%d\n",length);
for(i = 0; i < length; i++){
item = cJSON_CreateObject();
enum_arr = cJSON_CreateArray();
cJSON_AddNumberToObject(item,"count",length);
memset(key,0,256);
sprintf(key,"data[%d][length]",i);
cgi_form_result=cgiFormInteger(key,&enum_len,0);
if (cgi_form_result != cgiFormSuccess){
rwg_write_log("%s reception failed,identification code:%d\n",key,cgi_form_result);
return -1;
}
rwg_write_log("%s :%d\n",key,enum_len);
for(j = 0; j < enum_len; j++){
enum_item = cJSON_CreateObject();
memset(key,0,256);
sprintf(key,"data[%d][enum][%d][value]",i,j);
cgi_form_result=cgiFormString(key,value,256);
if (cgi_form_result != cgiFormSuccess){
rwg_write_log("%s reception failed,identification code:%d\n",key,cgi_form_result);
return -1;
}
cJSON_AddStringToObject(enum_item,"value",value);
memset(key,0,256);
sprintf(key,"data[%d][enum][%d][text]",i,j);
cgi_form_result=cgiFormString(key,value,256);
if (cgi_form_result != cgiFormSuccess){
rwg_write_log("%s reception failed,identification code:%d\n",key,cgi_form_result);
return -1;
}
cJSON_AddStringToObject(enum_item,"text",value);
cJSON_AddItemToArray(enum_arr,enum_item);
}
cJSON_AddItemToObject(item,"enum",enum_arr);
cJSON_AddItemToArray(enum_item_arr,item);
}
}
数组
nt32_t ret;
char **tt;
/**
* @brief 接收前台传参的处理。
* @note
*
* @param
* @retval 参数信息有效返回0,否则返回错误码
*/
int32_t rwg_get_request_params()
{
cgiFormResultType cgi_form_result;
cgi_form_result=cgiFormStringMultiple("data[]",&tt);
if (cgi_form_result != cgiFormSuccess){
rwg_write_log("data reception failed,identification code:%d\n",cgi_form_result);
goto fault;
}
return cgi_form_result;
fault:
rwg_write_log("reception failed,identification code:%d\n",cgi_form_result);
return cgi_form_result;
}