C語言中的JSON解析庫可以將一個JSON字符串解析成為JSON object,JSON array等JSON類型的值,同樣也可以將一個JSON object,JSON array等JSON類型的值轉換成JSON字符串。其中,將JSON value轉換成JSON字符串的API如下:
/* 將一個JSON value轉換成JSON字符串 */ char* cJSON_Print(const cJSON *item); /* 將一個JSON value格式化輸出成JSON字符串,可以設置縮進和分行等格式 */ char* cJSON_PrintBuffered(const cJSON *item, int prebuffer, int fmt);
其中,cJSON_Print()函數將JSON value轉換成JSON字符串并返回,cJSON_PrintBuffered()函數可以設置縮進、分行等格式將JSON value輸出到指定的字符數組中。
例如,以下代碼演示了如何將一個JSON value轉換成JSON字符串并輸出:
#include "cJSON.h" int main(int argc, char const *argv[]) { /* JSON value對象 */ cJSON *root = cJSON_CreateObject(); if (!root) { printf("cJSON create object failed\n"); return -1; } /* 往JSON value對象中添加屬性 */ cJSON_AddItemToObject(root, "name", cJSON_CreateString("Tom")); cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(18)); cJSON_AddItemToObject(root, "male", cJSON_CreateTrue()); cJSON* hobby = cJSON_CreateArray(); cJSON_AddItemToArray(hobby, cJSON_CreateString("reading")); cJSON_AddItemToArray(hobby, cJSON_CreateString("programming")); cJSON_AddItemToArray(hobby, cJSON_CreateString("sports")); cJSON_AddItemToObject(root, "hobby", hobby); /* 將JSON value轉換成JSON字符串 */ char *json_str = cJSON_Print(root); if (!json_str) { printf("cJSON convert to string failed\n"); return -1; } printf("json string:\n%s\n", json_str); /* 釋放JSON value對象和字符串 */ cJSON_Delete(root); free(json_str); return 0; }
執行以上代碼將輸出以下JSON字符串:
{"age":18,"hobby":["reading","programming","sports"],"male":true,"name":"Tom"}
這里使用了cJSON庫的一些API創建一個JSON value對象,并將這個JSON value對象轉換成JSON字符串輸出。