最近一段時(shí)間在做cjson格式解析相關(guān)的問題,這里記錄下遇到的json解析數(shù)組的相關(guān)問題胀溺。
解析數(shù)組第一類:
image.png
像以上格式的數(shù)據(jù)解析可以使用如下方式:
cJSON *ip_arry = cJSON_GetObjectItem( clientlist, "iplist"); //clientlist 是使用 cjson對(duì)象
if( NULL != ip_arry ){
cJSON *client_list = ip_arry->child;
while( client_list != NULL ){
char * ip = cJSON_GetObjectItem( client_list , "ip")->valuestring ;
char * mask = cJSON_GetObjectItem( client_list , "mask")->valuestring ;
printf("ip: %s mask: %s",ip,mask);
client_list = client_list->next ;
}
}
解析數(shù)組第二類:
image.png
有時(shí)候得到的數(shù)據(jù)需要是這個(gè)樣子的,這時(shí)候就需要如下的解析方法了:
cJSON *MAC_arry = cJSON_GetObjectItem( clientlist, "Maclist");
if( MAC_arry != NULL ){
int array_size = cJSON_GetArraySize ( MAC_arry );
for( iCnt = 0 ; iCnt < array_size ; iCnt ++ ){
cJSON * pSub = cJSON_GetArrayItem(MAC_arry, iCnt);
if(NULL == pSub ){ continue ; }
char * ivalue = pSub->valuestring ;
printf("Maclist[%d] : %s",iCnt,ivalue);
}
}
通過判斷判斷MAC_arry探知數(shù)組是否有值皆看,可以減少程序錯(cuò)誤的情況仓坞。