在使用C語言接收J(rèn)SON數(shù)據(jù)時,我們需要使用第三方庫來處理JSON數(shù)據(jù)。其中,cJSON庫是一種輕量級的JSON解析庫,非常方便實用。下面是一個簡單的示例代碼,演示如何使用cJSON庫來接收J(rèn)SON數(shù)據(jù):
#include <stdio.h> #include <cJSON.h> int main() { char* json_str = "{ \"name\":\"John\", \"age\":30, \"city\":\"New York\" }"; cJSON* json = cJSON_Parse(json_str); if (json == NULL) { const char* error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { printf("Error before: %s\n", error_ptr); } return 1; } const cJSON* name = cJSON_GetObjectItemCaseSensitive(json, "name"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("Name: %s\n", name->valuestring); } const cJSON* age = cJSON_GetObjectItemCaseSensitive(json, "age"); if (cJSON_IsNumber(age)) { printf("Age: %d\n", age->valueint); } const cJSON* city = cJSON_GetObjectItemCaseSensitive(json, "city"); if (cJSON_IsString(city) && (city->valuestring != NULL)) { printf("City: %s\n", city->valuestring); } cJSON_Delete(json); return 0; }
該示例代碼接收J(rèn)SON字符串并解析它,然后獲取其中的每個字段并將其輸出到控制臺上。在使用cJSON庫時,我們需要使用cJSON_Parse()函數(shù)來解析JSON字符串,使用cJSON_GetObjectItemCaseSensitive()函數(shù)來獲取JSON對象中的特定元素,使用cJSON_IsString()和cJSON_IsNumber()函數(shù)來驗證元素的類型,以及使用cJSON_Delete()函數(shù)清空J(rèn)SON對象。