在使用C語言讀取網站json數據結構時,我們可以使用第三方庫,比如Jansson或者cJSON。這些庫可以幫助我們快速解析和操作json數據。
//使用Jansson庫讀取一個json對象 #include#include int main() { char *json_string = "{\"name\":\"apple\", \"price\":50}"; json_error_t error; json_t *root; const char *name; int price; root = json_loads(json_string, 0, &error); if(!root) { printf("json load error\n"); return 1; } json_unpack(root, "{s:s, s:i}", "name", &name, "price", &price); printf("name: %s, price: %d\n", name, price); return 0; }
在上面的例子中,我們使用了Jansson庫讀取了一個json對象,并且解析出了其中的兩個屬性name和price。我們可以使用類似的方法讀取更復雜的json數據結構。
//使用cJSON庫讀取一個json數組 #include#include int main() { char *json_string = "[{\"name\":\"apple\", \"price\":50}, {\"name\":\"banana\", \"price\":20}]"; cJSON *root, *item; const char *name; int price; root = cJSON_Parse(json_string); if(!root) { printf("json parse error\n"); return 1; } cJSON_ArrayForEach(item, root) { cJSON *name_obj = cJSON_GetObjectItem(item, "name"); cJSON *price_obj = cJSON_GetObjectItem(item, "price"); if(name_obj && price_obj) { name = name_obj->valuestring; price = price_obj->valueint; printf("name: %s, price: %d\n", name, price); } } cJSON_Delete(root); return 0; }
在這個例子中,我們使用了cJSON庫讀取了一個json數組,并且解析出了其中的兩個對象的name和price屬性。我們可以使用類似的方法讀取更復雜的json數據結構。