C語言中的字典通常使用結(jié)構(gòu)體來表示,其中每個成員都表示一個鍵值對。轉(zhuǎn)換為JSON格式可以使用第三方庫或自己編寫函數(shù)。
以下是自己編寫的函數(shù)實現(xiàn)字典轉(zhuǎn)換為JSON:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_DICT_SIZE 100 typedef struct { char* key; char* value; } KeyValuePair; typedef struct { KeyValuePair* pairs[MAX_DICT_SIZE]; int size; } Dictionary; char* dictionary_to_json(Dictionary* dict); int main() { // 測試數(shù)據(jù) Dictionary dict; dict.size = 0; KeyValuePair pair1; pair1.key = "name"; pair1.value = "張三"; dict.pairs[0] = &pair1; dict.size++; KeyValuePair pair2; pair2.key = "age"; pair2.value = "20"; dict.pairs[1] = &pair2; dict.size++; // 轉(zhuǎn)換為JSON并打印結(jié)果 char* json = dictionary_to_json(&dict); printf("%s\n", json); free(json); return 0; } char* dictionary_to_json(Dictionary* dict) { char* json = (char*) malloc(MAX_DICT_SIZE * 20); char* ptr = json; strcat(ptr, "{"); ptr++; for (int i = 0; i < dict->size; i++) { KeyValuePair* pair = dict->pairs[i]; ptr += sprintf(ptr, "\"%s\":\"%s\"", pair->key, pair->value); if (i != dict->size - 1) { strcat(ptr, ","); ptr++; } } strcat(ptr, "}"); return json; }
該函數(shù)使用了C語言標(biāo)準(zhǔn)庫中的字符串操作函數(shù)實現(xiàn)字符串的拼接和格式化。使用時需要傳入一個Dictionary結(jié)構(gòu)體指針,函數(shù)返回一個動態(tài)分配的字符串指針,需要使用free()函數(shù)釋放。