JSON是一種輕量級的數(shù)據(jù)交換格式,因其結構簡單、易讀易寫,被廣泛地應用于前后端數(shù)據(jù)的傳輸。其中,數(shù)組作為JSON數(shù)據(jù)結構中非常常見的一種類型,有時我們需要將JSON字符串轉換成數(shù)組,進行數(shù)據(jù)處理。下面我們就來介紹一下C語言中如何將JSON字符串轉換成數(shù)組。
#include#include #include #include int main() { char *json_str = "[1,2,3,4,5]"; json_object *jarray = json_tokener_parse(json_str); enum json_type type = json_object_get_type(jarray); if (type == json_type_array) { int arraylen = json_object_array_length(jarray); int *array = malloc(sizeof(int) * arraylen); for (int i = 0; i< arraylen; i++) { json_object *jvalue = json_object_array_get_idx(jarray, i); if (json_object_is_type(jvalue, json_type_int)) { array[i] = json_object_get_int(jvalue); } else { printf("Invalid type in JSON array\n"); free(array); json_object_put(jarray); return -1; } } for (int i = 0; i< arraylen; i++) { printf("%d ", array[i]); } printf("\n"); free(array); } else { printf("Invalid JSON string\n"); json_object_put(jarray); return -1; } json_object_put(jarray); return 0; }
首先,我們將需要轉換的JSON字符串賦值給json_str,接著通過json_tokener_parse函數(shù)將其解析成json_object類型的jarray對象。然后,我們需要判斷jarray對象的類型是否為json_type_array,只有是數(shù)組類型才能進行后續(xù)處理。如果判斷為數(shù)組類型,我們可以通過json_object_array_length函數(shù)獲取數(shù)組長度,然后利用json_object_array_get_idx函數(shù)遍歷數(shù)組并逐一查詢每個元素的類型。如果元素類型為json_type_int,則將其轉換成int類型存入數(shù)組中。如果元素類型錯誤,則表示JSON字符串存在問題,需要退出程序。最后,我們可以輸出轉換后的數(shù)組。
總的來說,將JSON字符串轉換成數(shù)組的過程并不難,只需要使用json-c庫提供的API進行解析和處理即可。但我們還需要注意,程序中需要充分考慮到異常情況,比如JSON字符串格式錯誤或者數(shù)組元素類型不一致等問題,防止意外情況影響程序的正常運行。