C JSON是一種用于解析和生成JSON數據的庫。
有時候我們需要訪問JSON數據的屬性值,這時候就需要使用C JSON提供的一些API來解析JSON屬性值。下面是一個使用C JSON解析JSON屬性值的示例:
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> int main() { char* jsonStr = "{\"name\": \"Tom\", \"age\": 18, \"score\": [90, 80, 70]}"; cJSON* root = cJSON_Parse(jsonStr); if (root == NULL) { printf("JSON Parse Error\n"); return 1; } cJSON* name = cJSON_GetObjectItem(root, "name"); if (name != NULL) { printf("Name: %s\n", name->valuestring); } cJSON* age = cJSON_GetObjectItem(root, "age"); if (age != NULL) { printf("Age: %d\n", age->valueint); } cJSON* score = cJSON_GetObjectItem(root, "score"); if (score != NULL && cJSON_IsArray(score)) { int size = cJSON_GetArraySize(score); for (int i = 0; i< size; i++) { cJSON* item = cJSON_GetArrayItem(score, i); printf("Score[%d]: %d\n", i, item->valueint); } } cJSON_Delete(root); return 0; }
在上面的示例中,我們首先定義了一個JSON字符串來演示屬性值的解析。然后使用cJSON_Parse函數將其解析為一個cJSON對象。
接著,我們使用cJSON_GetObjectItem函數獲取JSON對象中的屬性值。如果屬性值存在,我們就可以使用返回的cJSON對象訪問其值。
值得注意的是,cJSON_GetObjectItem函數返回的cJSON對象可能為空。因此,在使用這個對象之前,一定要先判斷是否為空。
對于JSON數組,我們可以使用cJSON_IsArray和cJSON_GetArraySize函數來判斷其是否為數組以及數組的大小,然后使用cJSON_GetArrayItem函數獲取數組中的元素。
最后,我們使用cJSON_Delete函數釋放分配的內存。