在C語(yǔ)言中,有時(shí)候我們需要將一個(gè)List轉(zhuǎn)化為一個(gè)JSON字符串?dāng)?shù)組。這個(gè)時(shí)候,我們需要使用一些工具庫(kù)來(lái)完成這個(gè)操作。下面就是一個(gè)例子,展示如何使用C語(yǔ)言將一個(gè)List轉(zhuǎn)化為一個(gè)JSON字符串?dāng)?shù)組。
#include <stdio.h> #include <stdlib.h> #include <cJSON.h> #include <stdbool.h> typedef struct { char* name; int age; bool isMale; } Person; cJSON* person_to_json(Person* person) { cJSON* json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "name", person->name); cJSON_AddNumberToObject(json, "age", person->age); cJSON_AddBoolToObject(json, "is_male", person->isMale); return json; } cJSON* person_list_to_json_array(List* list) { cJSON* jsonArray = cJSON_CreateArray(); List* current = list; while (current != NULL) { Person* person = (Person*) current->value; cJSON_AddItemToArray(jsonArray, person_to_json(person)); current = current->next; } return jsonArray; } int main() { List* persons = create_list(person_compare); Person adam = {"Adam", 23, true}; Person eve = {"Eve", 25, false}; Person john = {"John", 27, true}; add_to_list(persons, &adam, sizeof(Person)); add_to_list(persons, &eve, sizeof(Person)); add_to_list(persons, &john, sizeof(Person)); cJSON* jsonArray = person_list_to_json_array(persons); char* jsonString = cJSON_Print(jsonArray); printf("%s\n", jsonString); free(jsonString); free_list(persons); cJSON_Delete(jsonArray); return 0; }
在上面的例子中,我們首先定義了一個(gè)Person結(jié)構(gòu)體,用于存儲(chǔ)人的姓名、年齡和性別。然后,我們定義了兩個(gè)函數(shù)。一個(gè)是person_to_json函數(shù),用于將一個(gè)Person對(duì)象轉(zhuǎn)化為一個(gè)JSON對(duì)象;另一個(gè)是person_list_to_json_array函數(shù),用于將一個(gè)Person的List對(duì)象轉(zhuǎn)化為一個(gè)JSON字符串?dāng)?shù)組。 在主函數(shù)中,我們首先創(chuàng)建了一個(gè)Person的List對(duì)象,并向其中添加了三個(gè)人的信息。然后,我們調(diào)用了person_list_to_json_array函數(shù),將這個(gè)List對(duì)象轉(zhuǎn)化為了一個(gè)JSON字符串?dāng)?shù)組。最后,我們輸出了這個(gè)JSON字符串?dāng)?shù)組。
上一篇python 解包打包