在C語言編程中,我們有時需要讀取JSON數(shù)據(jù)格式的數(shù)據(jù)。JSON是一種輕量級的數(shù)據(jù)交換格式,以文本形式表示結(jié)構(gòu)化數(shù)據(jù)。在C語言中,我們可以使用第三方庫來解析JSON數(shù)據(jù)格式,比如jansson和cJSON。
使用jansson解析JSON數(shù)據(jù)格式:
#include <jansson.h> #include <stdio.h> int main() { char* json_text = "{ \"name\" : \"Alice\", \"age\" : 18 }"; // JSON數(shù)據(jù)格式字符 json_error_t error; json_t* json = json_loads(json_text, 0, &error); // 解析JSON數(shù)據(jù)格式 if (!json) { fprintf(stderr, "JSON解析出錯:%s", error.text); return 1; } const char* name; json_integer_t age; json_unpack(json, "{s:s, s:i}", "name", &name, "age", &age); // 解析JSON數(shù)據(jù)并獲取值 printf("姓名:%s 年齡:%d\n", name, (int)age); json_decref(json); // 釋放內(nèi)存 return 0; }
使用cJSON解析JSON數(shù)據(jù)格式:
#include <stdio.h> #include <cJSON.h> int main() { char* json_text = "{ \"name\" : \"Alice\", \"age\" : 18 }"; // JSON數(shù)據(jù)格式字符 cJSON* json = cJSON_Parse(json_text); // 解析JSON數(shù)據(jù)格式 if (!json) { const char* error_ptr = cJSON_GetErrorPtr(); if (error_ptr) { fprintf(stderr, "JSON解析出錯:%s", error_ptr); } return 1; } const cJSON* name = cJSON_GetObjectItemCaseSensitive(json, "name"); const cJSON* age = cJSON_GetObjectItemCaseSensitive(json, "age"); if (cJSON_IsString(name) && (name->valuestring != NULL) && cJSON_IsNumber(age)) { printf("姓名:%s 年齡:%d\n", name->valuestring, age->valueint); } cJSON_Delete(json); // 釋放內(nèi)存 return 0; }