在C語言中,生成嵌套JSON數據可以通過創建結構體來實現。以下是一個簡單的例子:
struct json_object {
char* key;
char* value;
struct json_object* child;
};
struct json_object* create_json_object(char* key, char* value) {
struct json_object* obj = (struct json_object*)malloc(sizeof(struct json_object));
obj->key = key;
obj->value = value;
obj->child = NULL;
return obj;
}
void add_child_to_json_object(struct json_object* parent, struct json_object* child) {
if (parent->child == NULL) {
parent->child = child;
return;
}
struct json_object* curr_child = parent->child;
while (curr_child->child != NULL) {
curr_child = curr_child->child;
}
curr_child->child = child;
}
void print_json_object(struct json_object* obj) {
printf("{ \"%s\": ", obj->key);
if (obj->value != NULL) {
printf("\"%s\"", obj->value);
if (obj->child != NULL) {
printf(", ");
}
}
if (obj->child != NULL) {
printf("[ ");
print_json_object(obj->child);
printf(" ]");
}
printf(" }");
}
通過以上代碼,我們可以創建一個名為json_object
的結構體,其中包含鍵key
、值value
和子對象child
。我們還可以使用create_json_object
和add_child_to_json_object
函數創建和添加新的對象。最后,我們可以使用print_json_object
函數打印對象及其所有子對象。
例如,我們可以創建一個用戶名為Alice
的用戶對象,其中包含基本信息和朋友列表:
int main() {
struct json_object* basic_info = create_json_object("name", "Alice");
add_child_to_json_object(basic_info, create_json_object("age", "25"));
add_child_to_json_object(basic_info, create_json_object("gender", "female"));
struct json_object* friend_list = create_json_object("friends", NULL);
add_child_to_json_object(friend_list, create_json_object("name", "Bob"));
add_child_to_json_object(friend_list, create_json_object("name", "Carol"));
add_child_to_json_object(friend_list, create_json_object("name", "David"));
add_child_to_json_object(basic_info, friend_list);
print_json_object(basic_info);
return 0;
}
運行以上程序,輸出結果如下:
{ "name": "Alice", "age": "25", "gender": "female", "friends": [ { "name": "Bob" }, { "name": "Carol" }, { "name": "David" } ] }
如此便創建了一個嵌套JSON數據。當然,在實際開發中,需要根據具體需求進行更復雜的結構和數據組合。