C web服務(wù)端 json
Json是一種輕量級的數(shù)據(jù)交換格式,我們經(jīng)常會在網(wǎng)絡(luò)請求過程中使用到它,比如在API接口中,我們通常會以json的格式返回數(shù)據(jù)。在C web服務(wù)端中,我們同樣需要對json進(jìn)行解析和生成。
解析json
我們可以使用開源的json庫cJSON來解析json。假設(shè)我們有一個json字符串如下:
{ "name": "John Smith", "age": 30, "isMarried": true, "hobbies": ["reading", "coding", "swimming"] }
我們可以使用如下代碼來解析:
cJSON* root = cJSON_Parse(json_str); char* name = cJSON_GetObjectItem(root, "name")->valuestring; int age = cJSON_GetObjectItem(root, "age")->valueint; bool is_married = cJSON_GetObjectItem(root, "isMarried")->valueint; cJSON* hobbies_array = cJSON_GetObjectItem(root, "hobbies"); for (int i = 0; i< cJSON_GetArraySize(hobbies_array); i++) { cJSON* hobby = cJSON_GetArrayItem(hobbies_array, i); printf("%s\n", hobby->valuestring); } cJSON_Delete(root);
生成json
我們同樣可以使用cJSON庫來生成json。假設(shè)我們有一個結(jié)構(gòu)體:
struct Person { char name[32]; int age; bool is_married; char* hobbies[3]; };
我們可以使用如下代碼來生成json:
cJSON* root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", person.name); cJSON_AddNumberToObject(root, "age", person.age); cJSON_AddBoolToObject(root, "isMarried", person.is_married); cJSON* hobbies_array = cJSON_CreateArray(); for (int i = 0; i< 3; i++) { cJSON_AddItemToArray(hobbies_array, cJSON_CreateString(person.hobbies[i])); } cJSON_AddItemToObject(root, "hobbies", hobbies_array); char* json_str = cJSON_Print(root); cJSON_Delete(root);
總結(jié)
使用cJSON庫,我們可以在C web服務(wù)端輕松地解析和生成json。在實(shí)際項目中,我們需要根據(jù)實(shí)際情況選擇最適合我們的json庫。