在C語言中,解析JSON是一個經常需要處理的任務。當JSON中包含數組時,解析任務會更加復雜。下面我們將介紹如何處理復雜的JSON數組解析。
{ "name": "John", "age": 30, "cars": [ { "make": "Ford", "model": "Mustang" }, { "make": "BMW", "model": "X5" } ] }
假設有這樣一個示例JSON。我們想要解析出其中的cars數組,該怎么做呢?
cJSON* root = cJSON_Parse(json_string); //將JSON字符串轉換為JSON節點 cJSON* cars = cJSON_GetObjectItem(root, "cars"); //獲取cars數組節點 int cars_count = cJSON_GetArraySize(cars); //獲取數組長度 for(int i = 0; i< cars_count; i++){ cJSON* car = cJSON_GetArrayItem(cars, i); //獲取第i個元素 cJSON* make = cJSON_GetObjectItem(car, "make"); //獲取make元素 cJSON* model = cJSON_GetObjectItem(car, "model"); //獲取model元素 printf("Car %d\n", i+1); printf("Make: %s\n", make->valuestring); printf("Model: %s\n", model->valuestring); } //釋放內存 cJSON_Delete(root);
如上代碼示例,我們首先通過cJSON_Parse函數將JSON字符串轉換為JSON節點,然后使用cJSON_GetObjectItem函數獲取cars數組節點,并使用cJSON_GetArraySize函數獲取數組長度。接下來通過循環遍歷數組元素,并通過cJSON_GetArrayItem函數獲取第i個元素。最后通過cJSON_GetObjectItem函數獲取每個元素中的make和model元素,并輸出內容。所有操作完成后,我們需要調用cJSON_Delete函數釋放內存。
以上是c語言解析復雜JSON數組的基本方法。在實際中,我們可能會遇到更復雜的情況,因此我們需要根據具體情況做好異常處理。
上一篇echart加載json
下一篇python 模擬請求頭