C語言是一門非常經(jīng)典的編程語言,為了實(shí)現(xiàn)數(shù)據(jù)的傳輸與處理,我們經(jīng)常需要將C類型的數(shù)據(jù)轉(zhuǎn)換為JSON字符串或者對(duì)象數(shù)組。下面我們通過使用cJSON庫,來實(shí)現(xiàn)將C類型轉(zhuǎn)換為JSON字符串?dāng)?shù)組對(duì)象數(shù)組。
#include <stdio.h> #include <stdlib.h> #include <cJSON.h> int main(){ // 創(chuàng)建JSON對(duì)象 cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "John"); cJSON_AddNumberToObject(root, "age", 18); // 將JSON對(duì)象轉(zhuǎn)換為JSON字符串 char *jsonStr = cJSON_Print(root); printf("%s\n", jsonStr); // 將JSON字符串轉(zhuǎn)換為JSON對(duì)象 cJSON *newRoot = cJSON_Parse(jsonStr); cJSON *nameObj = cJSON_GetObjectItem(newRoot, "name"); cJSON *ageObj = cJSON_GetObjectItem(newRoot, "age"); printf("name: %s, age: %d\n", nameObj->valuestring, ageObj->valueint); // 創(chuàng)建JSON數(shù)組 cJSON *arr = cJSON_CreateArray(); cJSON_AddItemToArray(arr, cJSON_CreateNumber(1)); cJSON_AddItemToArray(arr, cJSON_CreateNumber(2)); cJSON_AddItemToArray(arr, cJSON_CreateNumber(3)); // 將JSON數(shù)組轉(zhuǎn)換為JSON對(duì)象 cJSON *arrRoot = cJSON_CreateObject(); cJSON_AddItemToObject(arrRoot, "nums", arr); char *arrStr = cJSON_Print(arrRoot); printf("%s\n", arrStr); // 將JSON對(duì)象轉(zhuǎn)換為JSON數(shù)組 cJSON *newArrRoot = cJSON_Parse(arrStr); cJSON *newArr = cJSON_GetObjectItem(newArrRoot, "nums"); printf("%d\n", cJSON_GetArraySize(newArr)); cJSON_Delete(newArrRoot); cJSON_Delete(arrRoot); cJSON_Delete(root); free(jsonStr); free(arrStr); return 0; }
在上述代碼中,我們使用了cJSON庫中的函數(shù),實(shí)現(xiàn)了將C類型轉(zhuǎn)換為JSON字符串和對(duì)象數(shù)組的功能。其中,cJSON_CreateObject()函數(shù)創(chuàng)建了一個(gè)JSON對(duì)象,cJSON_AddStringToObject()和cJSON_AddNumberToObject()函數(shù)將字符串和數(shù)字鍵值對(duì)添加到JSON對(duì)象中。
我們將JSON對(duì)象轉(zhuǎn)換為JSON字符串,使用了cJSON_Print()函數(shù)。接著,我們使用cJSON_Parse()函數(shù)將JSON字符串轉(zhuǎn)換為JSON對(duì)象。獲取JSON對(duì)象中的鍵值對(duì),需要使用cJSON_GetObjectItem()函數(shù)。
除了將C類型轉(zhuǎn)換為JSON對(duì)象和JSON字符串,我們還需要實(shí)現(xiàn)將JSON數(shù)組轉(zhuǎn)換為JSON對(duì)象的功能。在上述代碼中,我們使用了cJSON_CreateArray()函數(shù)創(chuàng)建了一個(gè)JSON數(shù)組,cJSON_AddItemToArray()函數(shù)將數(shù)字添加到JSON數(shù)組中。接著,我們使用cJSON_CreateObject()函數(shù)創(chuàng)建了一個(gè)JSON對(duì)象,使用cJSON_AddItemToObject()函數(shù)將JSON數(shù)組添加到對(duì)象中,并使用cJSON_Print()函數(shù)將JSON對(duì)象轉(zhuǎn)換為JSON字符串。
最后,我們使用cJSON_Parse()函數(shù)將JSON字符串轉(zhuǎn)換為JSON對(duì)象,使用cJSON_GetObjectItem()函數(shù)獲取JSON對(duì)象中的JSON數(shù)組,并使用cJSON_GetArraySize()函數(shù)獲取JSON數(shù)組的長度。