C語言是一種強大的編程語言,可以用于編寫各種各樣的程序。其中,將C結構體轉換為JSON格式是一種非常常見的操作,可以方便地在網絡傳輸數據的過程中進行信息交流。下面我們就來介紹一下如何將C結構體轉換為JSON格式。
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <ctype.h> #include <jansson.h> //定義一個C結構體,用于存儲關于學生的信息 typedef struct _student { char name[20]; int age; char sex[10]; }Student; //將C結構體轉換為JSON格式 json_t* student_to_json(Student s) { json_t* root = json_object(); json_object_set_new(root, "name", json_string(s.name)); json_object_set_new(root, "age", json_integer(s.age)); json_object_set_new(root, "sex", json_string(s.sex)); return root; } //將JSON格式轉換為C結構體 bool json_to_student(json_t* root, Student* s) { const char* name = json_string_value(json_object_get(root, "name")); int age = json_integer_value(json_object_get(root, "age")); const char* sex = json_string_value(json_object_get(root, "sex")); if(name && sex && age >0) { strcpy(s->name, name); s->age = age; strcpy(s->sex, sex); return true; } return false; } int main() { Student s = {"Tom", 18, "male"}; json_t* root = student_to_json(s); char* result = json_dumps(root, JSON_PRESERVE_ORDER | JSON_INDENT(4)); printf("student info: %s\n", result); Student new_s; json_to_student(root, &new_s); printf("new student info: name=%s age=%d sex=%s\n", new_s.name, new_s.age, new_s.sex); json_decref(root); free(result); return 0; }
上述代碼中使用了jansson庫,該庫為C語言提供了方便的JSON解析和生成功能。其中,student_to_json函數將Student結構體轉換為JSON格式,json_to_student函數將JSON格式轉換為Student結構體。在main函數中,我們首先將一個Student結構體轉換為JSON格式,并將生成的JSON字符串輸出到控制臺。隨后,我們將JSON格式轉換為另一個Student結構體,并將新生成的結構體的信息輸出到控制臺。