在C語言中,寫JSON通常會使用第三方庫或自己實現一個庫來處理。
以下是一個示例JSON庫:
struct json_object { enum { json_null, json_boolean, json_number, json_string, json_array, json_object } type; union { char *string; double number; struct json_object *array; struct { char *key; struct json_object *value; } object; } data; }; struct json_object *json_parse(char *json_string); char *json_stringify(struct json_object *obj); void json_free(struct json_object *obj);
使用這個庫,我們可以通過以下方式創建一個JSON對象:
struct json_object *obj = malloc(sizeof(struct json_object)); obj->type = json_object; struct json_object *name = malloc(sizeof(struct json_object)); name->type = json_string; name->data.string = strdup("John"); struct json_object *age = malloc(sizeof(struct json_object)); age->type = json_number; age->data.number = 20; struct json_object *person = malloc(sizeof(struct json_object)); person->type = json_object; person->data.object.key = strdup("name"); person->data.object.value = name; struct json_object *root = malloc(sizeof(struct json_object)); root->type = json_array; root->data.array = malloc(sizeof(struct json_object) * 2); root->data.array[0] = *person; root->data.array[1] = *age;
使用json_stringify
函數將JSON對象轉換為字符串,然后進行輸出:
char *json_str = json_stringify(root); printf("%s\n", json_str); free(json_str);
輸出結果如下:
[{ "name": "John" }, 20]
最后,使用json_free
函數釋放JSON對象的內存:
json_free(root);