在C語言中,我們通常使用JSON編碼來傳輸和存儲數據。有時候,我們需要把JSON字符串轉化為C數組對象數組,以方便進行數據處理和操作。以下是一個使用C庫“cJSON”將JSON字符串轉換為數組對象數組的示例。
// 引入頭文件 #include <stdio.h> #include <cjson/cJSON.h> int main() { // JSON字符串 char* jsonString = "{\"employees\": [ {\"firstName\":\"John\", \"lastName\":\"Doe\"}, {\"firstName\":\"Anna\", \"lastName\":\"Smith\"}, {\"firstName\":\"Peter\", \"lastName\":\"Jones\"} ]}"; // 解析JSON字符串 cJSON* json = cJSON_Parse(jsonString); // 獲取數組對象 cJSON* employees = cJSON_GetObjectItemCaseSensitive(json, "employees"); int numEmployees = cJSON_GetArraySize(employees); // 創建C數組對象數組 struct employee { char* firstName; char* lastName; } employeesArray[numEmployees]; // 循環遍歷JSON數組對象,填充C數組對象數組 int i=0; cJSON_ArrayForEach(employeeJSON, employees) { cJSON* firstNameJSON = cJSON_GetObjectItemCaseSensitive(employeeJSON, "firstName"); cJSON* lastNameJSON = cJSON_GetObjectItemCaseSensitive(employeeJSON, "lastName"); employeesArray[i].firstName = cJSON_GetStringValue(firstNameJSON); employeesArray[i].lastName = cJSON_GetStringValue(lastNameJSON); i++; } // 打印C數組對象數組 for(int j=0; j<numEmployees; j++) { printf("Employee %d:\n\tFirst Name: %s\n\tLast Name: %s\n", j+1, employeesArray[j].firstName, employeesArray[j].lastName); } // 釋放內存 cJSON_Delete(json); return 0; }
以上代碼中,我們首先使用cJSON_Parse函數解析輸入的JSON字符串,并使用cJSON_GetObjectItemCaseSensitive函數獲取了“employees”數組對象。接著,我們使用cJSON_GetArraySize函數獲取了數組對象中元素的個數,然后創建了一個C數組對象數組employeesArray,大小為numEmployees。循環遍歷JSON數組對象中的元素,然后使用cJSON_GetObjectItemCaseSensitive函數獲取每個員工元素中的“firstName”和“lastName”,并將它們賦值給C數組對象數組中對應的元素。最后,我們打印出了C數組對象數組中的員工信息,并使用cJSON_Delete函數釋放了JSON對象所占用的內存。
通過使用cJSON庫,我們可以輕松地將JSON字符串轉換為C數組對象數組,以方便進行數據處理和操作。
上一篇python+井字棋盤
下一篇gson解析json泛型