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

c 字典如何轉(zhuǎn)換為json

李中冰2年前9瀏覽0評論

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ù)釋放。