在C語言中,處理JSON數據有時需要對數據進行序列化(將JSON轉化為字符串形式)。
常見的C語言JSON庫中,如 cJSON、JSMN、cJSON等,都提供了相應的JSON序列化功能。
//cJSON序列化示例 cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "John"); cJSON_AddNumberToObject(root, "age", 30); cJSON_AddBoolToObject(root, "married", false); char *root_string = cJSON_Print(root); printf("%s", root_string); cJSON_Delete(root);
上述代碼中,我們使用 cJSON 創建了一個 JSON 對象 root,并向其中添加了三個鍵值對。接下來使用 cJSON_Print 將其序列化成字符串。
需要注意的是,在使用完 JSON 對象后,需要調用 cJSON_Delete 函數刪除它們。
類似的,JSMN庫也提供了JSON序列化功能:
//JSMN序列化示例 jsmntok_t *tokens = malloc(sizeof(jsmntok_t) * 128); int num = jsmn_parse(&parser, json_string, strlen(json_string), tokens, 128); char *json_out = malloc(strlen(json_string) + 1); jsmn_dump(json_out, tokens, num); printf("%s", json_out); free(json_out); free(tokens);
在 JSMN 庫中,我們先使用 jsmn_parse 解析 JSON 字符串,然后使用 jsmn_dump 將其序列化為新的 JSON 字符串。
總之,無論使用 cJSON、JSMN還是其他 C 語言 JSON 庫,它們都提供了相應的 JSON 序列化功能,方便用戶在 C 語言中處理 JSON 數據。