C JSON是一種常用的JSON庫,其提供了處理JSON數據的函數,其功能包括JSON數據的序列化和反序列化。
反序列化是將JSON格式的數據轉化為內存中的C數據結構。例如,將JSON字符串轉化為C語言中的結構體或數組。下面以一個簡單的例子展示C JSON的反序列化功能。
#include "cJSON.h" #include <stdio.h> typedef struct { char *name; int age; char *gender; } Person; int main() { char *json_string = "{\"name\": \"John\", \"age\": 30, \"gender\": \"Male\"}"; cJSON *json = cJSON_Parse(json_string); Person person = { .name = cJSON_GetObjectItem(json, "name")->valuestring, .age = cJSON_GetObjectItem(json, "age")->valueint, .gender = cJSON_GetObjectItem(json, "gender")->valuestring }; printf("Name: %s\nAge: %d\nGender: %s", person.name, person.age, person.gender); cJSON_Delete(json); return 0; }
在上面的例子中,我們定義了一個名為Person的結構體,其中包含了人物的姓名、年齡和性別。接著,我們引入了C JSON庫,并將待反序列化的JSON字符串以字符指針的形式存儲在json_string變量中。
在main函數中,我們使用cJSON_Parse函數將json_string解析為一個cJSON對象。接著,我們利用cJSON庫提供的函數cJSON_GetObjectItem,從cJSON對象中獲取我們需要的值,并將其存儲到一個Person結構體的實例person中。最后,我們打印person結構體中的成員變量,完成反序列化操作。
需要注意的是,在使用C JSON庫進行反序列化之前,我們需要對待反序列化的JSON字符串做一些預處理工作,具體來說,是將JSON字符串存儲在字符指針中,并使用cJSON_Parse函數將其解析為cJSON對象。處理完成后,我們就可以使用cJSON庫提供的函數獲取JSON對象中的值,并將其存儲到C語言中的數據結構中。反序列化完成后,我們應該及時釋放cJSON對象的內存。