在c語言中,我們能夠很方便地解析json字符串,但是如果json字符串中有一個沒有鍵值的數組,該怎么解析呢?
一個例子如下:
{ "name": "小明", "age": 20, "hobby": [ "跑步", "游泳", "打羽毛球", "", "打乒乓球" ] }
在以上的例子中,hobby數組中存在一個空字符串,這個空字符串是沒有對應的鍵值的,解析起來我們需要特殊處理。
我們可以使用cJSON庫來解析這個json字符串,并且可以使用以下代碼來獲取hobby數組:
cJSON *cjson = cJSON_Parse(jsonStr); //jsonStr為需要解析的json字符串 cJSON *hobbyArr = cJSON_GetObjectItem(cjson, "hobby"); //獲取hobby數組 cJSON *hobbyItem = hobbyArr->child; //獲取第一個hobby元素 while (hobbyItem != NULL) { if (hobbyItem->type == cJSON_String) { //如果hobby元素是字符串類型 if (strlen(hobbyItem->valuestring) >0) { //如果字符串非空 printf("%s\n", hobbyItem->valuestring); //輸出hobby元素的值 } } hobbyItem = hobbyItem->next; //獲取下一個hobby元素 }
在以上的代碼中,我們首先是使用cJSON_Parse函數將json字符串解析成一個cJSON對象,然后使用cJSON_GetObjectItem函數獲取hobby數組,再使用hobbyArr->child獲取第一個hobby元素,通過while循環遍歷所有的元素。
在遍歷時,我們需要判斷hobby元素是否為字符串類型,如果是,再判斷其是否為非空字符串,如果是,就輸出其值。需要注意,如果hobby元素不是字符串類型,例如是數字類型、布爾類型等,則忽略,只處理字符串類型。
使用以上的代碼就可以很方便地解析無key值的json數組了。
上一篇c 文本文件轉json
下一篇c 映射json字段