C語言中,把字符串轉(zhuǎn)換為JSON是一個常見的任務,這需要使用一個特定的庫來完成。一般而言,我們可以使用libjson這個庫來完成這樣的任務。下面,我們將介紹如何使用libjson來把字符串轉(zhuǎn)換為JSON。
#include "libjson.h" #includeint main() { char* str = "{ \"name\": \"小明\", \"age\": 18, \"isStudent\": true }"; JSONNODE* node = json_parse(str); if (node == NULL) { printf("Failed to parse JSON string!\n"); return -1; } JSONNODE* nameNode = json_get(node, "name"); if (nameNode != NULL && json_type(nameNode) == JSON_STRING) { printf("Name: %s\n", json_as_string(nameNode)); } JSONNODE* ageNode = json_get(node, "age"); if (ageNode != NULL && json_type(ageNode) == JSON_NUMBER) { printf("Age: %d\n", json_as_int(ageNode)); } JSONNODE* isStudentNode = json_get(node, "isStudent"); if (isStudentNode != NULL && json_type(isStudentNode) == JSON_BOOL) { printf("Is student: %s\n", json_as_bool(isStudentNode) ? "true" : "false"); } json_delete(node); return 0; }
首先,我們聲明了一個JSON字符串"str",它包含了一個名字、一個年齡和一個是否為學生的布爾值。接下來,我們調(diào)用了json_parse函數(shù),把這個字符串轉(zhuǎn)換為JSON對象。如果json_parse返回NULL,則表示轉(zhuǎn)換失敗,我們需要特殊處理這種情況,這里我們直接打印出錯誤信息并返回-1。 接下來,使用json_get函數(shù)和鍵名來獲取節(jié)點。這里我們使用了三個鍵名:"name"、"age"和"isStudent",分別對應字符串、整數(shù)和布爾值。獲取到節(jié)點后,我們使用json_type函數(shù)來獲取節(jié)點的類型,然后使用json_as_string、json_as_int和json_as_bool函數(shù)來獲取節(jié)點的值,并分別打印出來。 最后,我們使用json_delete函數(shù)釋放JSON對象占用的內(nèi)存,并正常退出程序。 需要注意的是,在使用libjson庫完成字符串轉(zhuǎn)JSON的過程中,我們需要注意JSON字符串的格式,確保它符合JSON語法規(guī)范。