在現(xiàn)代web開發(fā)中,使用json數(shù)據(jù)格式已經(jīng)成為一種標準。C語言也可以使用web api來處理json數(shù)據(jù)。
C語言提供了一些庫來處理json數(shù)據(jù),如cJSON和Jansson。
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> int main() { const char* json_string = "{\"name\": \"張三\", \"age\": 20}"; cJSON* root = cJSON_Parse(json_string); const char* name = cJSON_GetObjectItem(root, "name")->valuestring; int age = cJSON_GetObjectItem(root, "age")->valueint; printf("Name: %s, Age: %d\n", name, age); cJSON_Delete(root); return 0; }
上述代碼使用cJSON庫解析json字符串。首先需要將json字符串解析成cJSON對象,接著就可以通過cJSON_GetObjectItem函數(shù)來獲取對象中的屬性了。
使用Jansson庫,可以更加方便地處理json數(shù)據(jù)。
#include <stdio.h> #include <jansson.h> int main() { const char* json_string = "{\"name\": \"張三\", \"age\": 20}"; json_error_t error; json_t* root = json_loads(json_string, 0, &error); const char* name = json_string_value(json_object_get(root, "name")); int age = json_integer_value(json_object_get(root, "age")); printf("Name: %s, Age: %d\n", name, age); json_decref(root); return 0; }
使用Jansson庫可以使用json_loads函數(shù)將json字符串直接解析成json_t對象,接著可以使用json_object_get函數(shù)獲取對象中的屬性值。
總的來說,cJSON和Jansson庫都可以很方便地處理json數(shù)據(jù),開發(fā)者可以根據(jù)自己的需要選擇使用。