C程序是一種流行的編程語言,用于編寫各種應用程序。在處理現代Web應用程序時,C語言常用于讀取和解析JSON格式的數據。下面我們來看一下如何通過C程序讀取JSON的值。
#include#include #include #include int main(int argc, char *argv[]) { char *jsonstr = "{\"name\":\"張三\", \"age\":\"23\", \"cities\":[\"北京\",\"上海\",\"深圳\"]}"; json_error_t error; json_t *root = json_loads(jsonstr, 0, &error); //將JSON字符串加載成JSON對象 if (!root) { fprintf(stderr, "error: load json failed at line %d: %s\n", error.line, error.text); exit(1); } json_t *name = json_object_get(root, "name"); //獲取JSON對象中的name屬性值 json_t *age = json_object_get(root, "age"); //獲取JSON對象中的age屬性值 printf("姓名:%s\n", json_string_value(name)); printf("年齡:%d\n", json_integer_value(age)); json_t *cities = json_object_get(root, "cities"); //獲取JSON對象中的cities屬性值 printf("城市:\n"); for (size_t i = 0; i< json_array_size(cities); i++) { json_t *city = json_array_get(cities, i); if (!json_is_string(city)) { //如果不是字符串,則跳過 continue; } printf("- %s\n", json_string_value(city)); } json_decref(root); //釋放JSON對象占用的內存 return 0; }
上述代碼使用了一份JSON字符串作為輸入,然后通過jansson庫的json_loads函數將其解析成JSON對象。接下來,我們可以使用json_object_get函數獲取JSON對象中的屬性,然后使用不同的json_*_value函數來獲取屬性的具體值。最后,我們可以通過json_array_size和json_array_get函數來遍歷JSON數組并打印其中的每個元素。
在實際開發中,我們需要先加載JSON數據,然后通過json_object_get和json_array_get函數來獲取想要的屬性值和數組元素。jansson庫還提供了其他一些函數,用于處理JSON數據的解析和構建,你可以根據需要使用它們。