c語言是一門廣泛應(yīng)用于系統(tǒng)編程、驅(qū)動程序、網(wǎng)絡(luò)編程等領(lǐng)域的編程語言。在這些領(lǐng)域,經(jīng)常需要將數(shù)據(jù)存儲到文件或者網(wǎng)絡(luò)中,json數(shù)據(jù)格式近年來越來越受歡迎,被廣泛應(yīng)用于數(shù)據(jù)的存儲和交換。
json是一種輕量級數(shù)據(jù)交換格式,可以在不同的平臺和編程語言之間進(jìn)行數(shù)據(jù)的傳遞和交換。其基于鍵值對的形式,支持嵌套和數(shù)組,被廣泛應(yīng)用于web應(yīng)用和移動應(yīng)用中。
c語言中可以使用現(xiàn)有的json解析庫,如cJSON,來對json數(shù)據(jù)進(jìn)行解析和生成。cJSON是一款輕量級的c語言json解析庫,使用方便,性能良好。
// cJSON生成json示例 cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root,"name","xiaoming"); cJSON_AddNumberToObject(root,"age",18); cJSON *book_array = cJSON_CreateArray(); cJSON *book1 = cJSON_CreateObject(); cJSON_AddStringToObject(book1,"title","cjson"); cJSON_AddNumberToObject(book1,"price",10); cJSON_AddItemToArray(book_array,book1); cJSON_AddItemToObject(root,"book",book_array); char *json_str = cJSON_PrintUnformatted(root); // 輸出結(jié)果 // {"name":"xiaoming","age":18,"book":[{"title":"cjson","price":10}]}
// cJSON解析json示例 char *json_str = "{\"name\":\"xiaoming\",\"age\":18,\"book\":[{\"title\":\"cjson\",\"price\":10}]}"; cJSON *root = cJSON_Parse(json_str); if(root) { cJSON *name = cJSON_GetObjectItem(root,"name"); cJSON *age = cJSON_GetObjectItem(root,"age"); printf("name:%s age:%d\n",name->valuestring,age->valueint); cJSON *book_array = cJSON_GetObjectItem(root,"book"); if(cJSON_IsArray(book_array)) { cJSON *book1 = cJSON_GetArrayItem(book_array,0); cJSON *title = cJSON_GetObjectItem(book1,"title"); cJSON *price = cJSON_GetObjectItem(book1,"price"); printf("book title:%s price:%d\n",title->valuestring,price->valueint); } }
使用cJSON庫能夠方便地將數(shù)據(jù)轉(zhuǎn)換為json格式,也能夠解析json格式的數(shù)據(jù)。在實際開發(fā)中,我們可以將數(shù)據(jù)存儲為json格式的文件或者通過網(wǎng)絡(luò)傳輸,方便數(shù)據(jù)的交換和存儲。