JSON是一種輕量級的數據交換格式,其通常應用于前后端數據交互等場景。而C語言中也存在著一些處理JSON的庫,如cJSON庫。
cJSON庫是一個快速而輕量級的庫,它允許我們在C語言中方便地解析和生成JSON數據。下面我們就來看一下如何從JSON串中讀取對象。
// JSON串 { "name": "張三", "age": 18, "score": { "math": 90, "english": 85, "chinese": 95 } } // C代碼 cJSON *root = cJSON_Parse(json_str); // 解析JSON串 if (root) { // 讀取對象 cJSON *name_obj = cJSON_GetObjectItem(root, "name"); cJSON *age_obj = cJSON_GetObjectItem(root, "age"); cJSON *score_obj = cJSON_GetObjectItem(root, "score"); // 讀取嵌套對象 cJSON *math_score_obj = cJSON_GetObjectItem(score_obj, "math"); cJSON *english_score_obj = cJSON_GetObjectItem(score_obj, "english"); cJSON *chinese_score_obj = cJSON_GetObjectItem(score_obj, "chinese"); // 獲取對象值 const char *name = cJSON_GetStringValue(name_obj); int age = cJSON_GetNumberValue(age_obj); int math_score = cJSON_GetNumberValue(math_score_obj); int english_score = cJSON_GetNumberValue(english_score_obj); int chinese_score = cJSON_GetNumberValue(chinese_score_obj); // 打印結果 printf("name: %s\nage: %d\nmath: %d\nenglish: %d\nchinese: %d\n", name, age, math_score, english_score, chinese_score); cJSON_Delete(root); // 釋放內存 }
以上代碼演示了如何使用cJSON庫從JSON串中讀取對象,包括讀取普通對象和嵌套對象,以及獲取對象的值。同時也需要注意,在使用完cJSON_Parse解析JSON串后,需要調用cJSON_Delete函數釋放內存。