嵌入式linux嵌入式我用 Linux

cjson两种数组的解析方法

2017-07-25  本文已影响143人  爪爪熊

最近一段时间在做cjson格式解析相关的问题,这里记录下遇到的json解析数组的相关问题。

解析数组第一类:

image.png

像以上格式的数据解析可以使用如下方式:

cJSON *ip_arry     = cJSON_GetObjectItem( clientlist, "iplist");  //clientlist 是使用 cjson对象
if( NULL != ip_arry ){
 cJSON *client_list  = ip_arry->child;
    if( 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 ;
    }
}  

解析数组第二类:

image.png

有时候得到的数据需要是这个样子的,这时候就需要如下的解析方法了:

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探知数组是否有值,可以减少程序错误的情况。

上一篇下一篇

猜你喜欢

热点阅读