C語(yǔ)言是一種非常流行的編程語(yǔ)言,而JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,兩者的結(jié)合,可以讓我們快速地將json數(shù)據(jù)轉(zhuǎn)化為C語(yǔ)言的實(shí)體類,或是將C語(yǔ)言的實(shí)體類轉(zhuǎn)化為json格式,這個(gè)過(guò)程我們可以使用C JSON庫(kù)。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<jansson.h> // 定義一個(gè)實(shí)體類 typedef struct { int id; char* name; float price; } Product; // 將實(shí)體類轉(zhuǎn)化為json格式 json_t* product_to_json(Product* product) { json_t* json = json_object(); json_object_set_new(json, "id", json_integer(product->id)); json_object_set_new(json, "name", json_string(product->name)); json_object_set_new(json, "price", json_real(product->price)); return json; } // 將json格式轉(zhuǎn)化為實(shí)體類 Product* json_to_product(json_t* json) { Product* product = malloc(sizeof(Product)); product->id = json_integer_value(json_object_get(json, "id")); product->name = strdup(json_string_value(json_object_get(json, "name"))); product->price = json_real_value(json_object_get(json, "price")); return product; } int main() { // 定義一個(gè)Product實(shí)體類 Product product = {1, "Apple Watch", 199.99}; // 將實(shí)體類轉(zhuǎn)化為json格式輸出 json_t* json = product_to_json(&product); char* json_str = json_dumps(json, JSON_INDENT(4)); printf("%s\n", json_str); // 將json格式轉(zhuǎn)化為實(shí)體類并輸出 Product* product2 = json_to_product(json); printf("%d %s %f\n", product2->id, product2->name, product2->price); // 釋放內(nèi)存 free(product2->name); free(product2); json_decref(json); free(json_str); return 0; }
在以上示例代碼中,我們定義了一個(gè)Product實(shí)體類,然后使用C JSON庫(kù)將其轉(zhuǎn)化為json格式,再將json格式轉(zhuǎn)化為實(shí)體類。通過(guò)這種方法,我們可以快速地將需要的數(shù)據(jù)格式轉(zhuǎn)化為C語(yǔ)言程序可以使用的實(shí)體類,或是將實(shí)體類轉(zhuǎn)化為其他API需要的數(shù)據(jù)格式,實(shí)現(xiàn)數(shù)據(jù)的交換。