C語言解析JSON數據是一項重要的技能,特別是對于那些處理數據的程序員。多層結構的JSON數據可能會更加復雜,但是只要你知道怎樣解析它們,一切都會變得很輕松。
下面我們來看看怎樣解析一個多層結構的JSON數據。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char* json_string = "{\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"state\":\"NY\",\"zipcode\":\"10001\"},\"phone\":[{\"type\":\"home\",\"number\":\"123-456-7890\"},{\"type\":\"office\",\"number\":\"987-654-3210\"}]}"; json_error_t error; json_t* root = json_loads(json_string, 0, &error); if (!root) { printf("error: on line %d: %s\n", error.line, error.text); return -1; } json_t* name = json_object_get(root, "name"); printf("Name: %s\n", json_string_value(name)); json_t* age = json_object_get(root, "age"); printf("Age: %d\n", json_integer_value(age)); json_t* address = json_object_get(root, "address"); json_t* city = json_object_get(address, "city"); printf("City: %s\n", json_string_value(city)); json_t* phone = json_object_get(root, "phone"); for (int i = 0; i < json_array_size(phone); i++) { json_t* phone_item = json_array_get(phone, i); json_t* type = json_object_get(phone_item, "type"); json_t* number = json_object_get(phone_item, "number"); printf("Phone %d - Type: %s, Number: %s\n", i+1, json_string_value(type), json_string_value(number)); } json_decref(root); return 0; }
在這個示例中,我們使用了開源的JSON庫jansson來解析JSON數據。我們首先定義了一個JSON字符串,它包含一個名為John的人物的基本信息,包括名字、年齡、地址和電話。然后,我們加載并解析JSON數據,訪問根節點和所有子節點。這個示例中還包括了循環遍歷JSON數組的用法。
使用C語言解析JSON數據可能會有點棘手,但是只要你知道基本的語法和概念,就可以輕松地解析多層結構的JSON數據。