色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 結構體與json互轉

林國瑞2年前8瀏覽0評論

C語言中結構體的定義是存儲一組相關變量的數據類型。在某些場景下需要將結構體轉化為JSON格式進行傳輸和存儲,或者將JSON數據解析成結構體進行處理。本篇文章將介紹如何實現C結構體與JSON互轉。

首先,我們需要引入JSON解析庫。常用的有cJSON和jansson。這里以cJSON為例。

#include "cJSON.h"

將結構體轉化為JSON:

typedef struct Person {
char name[20];
int age;
} Person;
void structToJSON(Person *person) {
cJSON *root = cJSON_CreateObject();
cJSON_AddItemToObject(root, "name", cJSON_CreateString(person->name));
cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(person->age));
printf("%s", cJSON_Print(root)); // 打印JSON字符串
cJSON_Delete(root); // 釋放內存
}

上述代碼首選定義了一個結構體Person,然后使用cJSON_CreateObject函數創建一個空JSON對象。接著使用cJSON_AddItemToObject函數將變量name和age加入JSON對象中。最后使用cJSON_Print將JSON對象轉換為字符串并打印出來。

將JSON轉化為結構體:

Person* JSONToStruct(const char* jsonString) {
cJSON *root = cJSON_Parse(jsonString);
Person *person = (Person*)malloc(sizeof(Person));
char* name = cJSON_GetObjectItem(root, "name")->valuestring;
int age = cJSON_GetObjectItem(root, "age")->valueint;
strcpy(person->name, name);
person->age = age;
cJSON_Delete(root);
return person;
}

此處使用cJSON_Parse函數將JSON字符串解析成JSON對象,然后根據JSON對象中的name和age獲取其對應的值,再使用strcpy和賦值語句將值拷貝到Person結構體的變量中。最后釋放內存后返回Person指針。

最后,需要注意的是,結構體中的變量名應與JSON中的鍵名保持一致。