在C語言中,有時候需要解析JSON數據,我們可以使用一些第三方庫來完成這個任務,例如cJSON。
#include <stdio.h> #include <cJSON.h> char *jsonStr = "{\ \"name\": \"張三\",\ \"age\": 18,\ \"gender\": \"男\",\ \"score\": {\ \"chinese\": 90,\ \"math\": 80,\ \"english\": 70\ },\ \"hobby\": [\ \"足球\",\ \"籃球\",\ \"羽毛球\"\ ]\ }"; int main() { cJSON *json = cJSON_Parse(jsonStr); if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return -1; } char *name = cJSON_GetObjectItem(json, "name")->valuestring; int age = cJSON_GetObjectItem(json, "age")->valueint; char *gender = cJSON_GetObjectItem(json, "gender")->valuestring; cJSON *score = cJSON_GetObjectItem(json, "score"); int chinese = cJSON_GetObjectItem(score, "chinese")->valueint; int math = cJSON_GetObjectItem(score, "math")->valueint; int english = cJSON_GetObjectItem(score, "english")->valueint; cJSON *hobbyArray = cJSON_GetObjectItem(json, "hobby"); int hobbyCount = cJSON_GetArraySize(hobbyArray); char *hobbies[hobbyCount]; for (int i = 0; i< hobbyCount; i++) { cJSON *hobby = cJSON_GetArrayItem(hobbyArray, i); hobbies[i] = cJSON_Print(hobby); } printf("姓名: %s\n", name); printf("年齡: %d\n", age); printf("性別: %s\n", gender); printf("語文: %d, 數學: %d, 英語: %d\n", chinese, math, english); printf("興趣愛好:\n"); for (int i = 0; i< hobbyCount; i++) { printf("%s\n", hobbies[i]); } cJSON_Delete(json); return 0; }
代碼中定義了一個JSON字符串,包含了一個學生的姓名、年齡、性別、成績和興趣愛好。使用cJSON庫解析JSON數據,可以方便地獲取JSON中的數據。可以看到,獲取JSON中的數據主要使用了cJSON_GetObjectItem和cJSON_GetArrayItem這兩個函數,可以傳入要獲取的鍵名或鍵索引來獲取相應的值。cJSON_Print函數將cJSON類型的數據轉換為字符串類型。
上一篇python 循環截屏
下一篇gson json字符串