JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。C語言中有很多開源的JSON庫可以使用,包括cJSON、jansson等。在本文中,我們將介紹如何使用cJSON來解析JSON。
在使用cJSON前,我們需要先了解JSON的基本結構。JSON由對象和數組兩種結構組成,對象由“{}”包圍,屬性名和屬性值用“:”分隔,每個鍵值對之間用“,”分隔;數組由“[]”包圍,每個元素之間用“,”分隔。屬性值可以是字符串、數字、布爾值、對象或數組。
{ "name": "John", "age": 30, "isMale": true, "address": { "street": "Main Street", "city": "New York" }, "hobbies": [ "reading", "traveling", "photography" ] }
現在我們假設已經有一個JSON字符串,我們需要解析它并取出其中的某些值。
#include <stdio.h> #include <cJSON.h> int main() { char *json_string = "{\"name\":\"John\",\"age\":30,\"isMale\":true,\"address\":{\"street\":\"Main Street\",\"city\":\"New York\"},\"hobbies\":[\"reading\",\"traveling\",\"photography\"]}"; cJSON *json = cJSON_Parse(json_string); //解析JSON字符串 cJSON *name = cJSON_GetObjectItem(json, "name"); //取出name屬性 printf("name: %s\n", name->valuestring); cJSON *street = cJSON_GetObjectItem(cJSON_GetObjectItem(json, "address"), "street"); //取出address下的street屬性 printf("address.street: %s\n", street->valuestring); cJSON *hobbies = cJSON_GetObjectItem(json, "hobbies"); //取出hobbies屬性 cJSON *hobby; cJSON_ArrayForEach(hobby, hobbies) { printf("hobby: %s\n", hobby->valuestring); } cJSON_Delete(json); //釋放內存 return 0; }
在上面的代碼中,我們首先用cJSON_Parse函數將JSON字符串解析成cJSON對象,然后使用cJSON_GetObjectItem函數根據屬性名取出屬性。如果屬性值是一個對象或數組,我們可以使用cJSON_GetObjectItem和cJSON_ArrayForEach等函數來進一步獲取其中的值。最后,使用cJSON_Delete函數釋放內存。
上一篇python 數組查值
下一篇python 數組畫圖