C語言開發中,處理JSON數據格式時,通常需要進行JSON字符串和相應的數據結構之間的轉換。為了簡化開發者的工作,許多開源庫提供了JSON字符串轉換類實體的功能。在本文中,我們將介紹基于C語言的JSON字符串轉換類實體的使用方法和注意事項。
//JSON字符串轉換類實體示例代碼: #include#include #include #include "cJSON.h" typedef struct Person { char name[20]; int age; char *address; } Person; char *person_to_json(Person *p) { cJSON *root = cJSON_CreateObject(); //創建一個JSON對象 cJSON_AddStringToObject(root, "name", p->name); cJSON_AddNumberToObject(root, "age", p->age); cJSON_AddStringToObject(root, "address", p->address); char *json_str = cJSON_Print(root); cJSON_Delete(root); return json_str; } Person *json_to_person(const char *json_str) { cJSON *root = cJSON_Parse(json_str); if (!root) return NULL; Person *p = (Person *)malloc(sizeof(Person)); strncpy(p->name, cJSON_GetObjectItem(root, "name")->valuestring, sizeof(p->name)); p->age = cJSON_GetObjectItem(root, "age")->valueint; p->address = strdup(cJSON_GetObjectItem(root, "address")->valuestring); cJSON_Delete(root); return p; } int main() { Person p = {"John", 30, "Beijing, China"}; char *json_str = person_to_json(&p); printf("Person: %s\n", json_str); Person *p2 = json_to_person(json_str); printf("Person: name=%s, age=%d, address=%s\n", p2->name, p2->age, p2->address); free(json_str); free(p2->address); free(p2); return 0; }
在上面的示例代碼中,我們定義了一個Person結構體,包含姓名、年齡和地址三個字段。我們定義了兩個函數,person_to_json函數將Person結構體轉換成JSON字符串,json_to_person函數將JSON字符串轉換成Person結構體。在main函數中,我們首先使用person_to_json函數將Person結構體轉換成JSON字符串,然后將該字符串傳給json_to_person函數,獲取轉換后的Person結構體,最后打印該結構體的三個字段。當然,在使用完該結構體后,我們還需要釋放相關的內存。
需要注意的是,在使用cJSON庫時,我們需要在代碼中包含"cJSON.h"頭文件,并將cJSON.c文件編譯成靜態庫或動態庫,然后在鏈接時將該庫鏈接到目標文件中。
上一篇h5存儲json數據
下一篇c json增加元素