在C語言中,如何解析不同的JSON格式呢? 首先,需要有一個解析JSON的庫。
#include <stdio.h> #include <jansson.h> int main() { // 解析JSON字符串 char *json_str = "{\"name\":\"張三\",\"age\":18,\"sex\":\"male\"}"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); if (!root) { fprintf(stderr, "json error: on line %d: %s\n", error.line, error.text); return 1; } // 獲取JSON對象中的值 char *name = json_string_value(json_object_get(root, "name")); int age = json_integer_value(json_object_get(root, "age")); char *sex = json_string_value(json_object_get(root, "sex")); // 輸出結果 printf("name:%s age:%d sex:%s\n", name, age, sex); // 釋放對象 json_decref(root); return 0; }
上述代碼演示了如何解析一個簡單的JSON字符串,包含三個屬性:name,age,sex。用json_loads()函數解析JSON字符串得到一個json_t類型的根節點,再通過json_object_get()函數獲取其中的值即可。
對于復雜的JSON格式,可以使用json_object_foreach()和json_array_foreach()函數遍歷JSON對象和數組。比如下面這個JSON格式:
{ "name":"張三", "age":18, "hobbies":["reading", "music", "sports"], "friends":[ {"name":"李四", "age":19}, {"name":"王五", "age":20}, {"name":"趙六", "age":21} ] }
可以使用以下代碼進行解析:
json_t *hobbies = json_object_get(root, "hobbies"); // 獲取hobbies數組 size_t index; json_t *value; json_array_foreach(hobbies, index, value) { // 遍歷數組 printf("我的愛好是:%s\n", json_string_value(value)); } json_t *friends = json_object_get(root, "friends"); // 獲取friends數組 json_array_foreach(friends, index, value) { // 遍歷數組 json_t *name = json_object_get(value, "name"); // 獲取name屬性 json_t *age = json_object_get(value, "age"); // 獲取age屬性 printf("我的朋友是:%s,年齡是:%d\n", json_string_value(name), json_integer_value(age)); }
使用json_object_foreach()函數遍歷JSON對象也是類似的,只不過需要注意是字符串值還是其它類型的值。
總之,在C語言中,要解析JSON格式,需要先選擇一個JSON庫,然后根據JSON格式的不同,選擇合適的解析方式。
上一篇python 看周幾
下一篇dom輸出json