JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,由于其具有簡(jiǎn)潔、易讀和跨語(yǔ)言等特點(diǎn),被廣泛應(yīng)用于Web開(kāi)發(fā)中。
在C語(yǔ)言中,解析JSON字符串通常需要借助第三方庫(kù),如 cJSON。但是,對(duì)于含有數(shù)組的嵌套JSON字符串的解析,需要一些額外的處理。
// 假設(shè)原始字符串為以下形式 char* str = {"name": "Tom", "age": 20, "hobbies": ["swimming", "running"]}; // 解析字符串中的數(shù)組需要用到 cJSON_GetObjectItem() 函數(shù) cJSON* hobbies = cJSON_GetObjectItem(json, "hobbies"); // 如果嵌套的JSON中有多個(gè)數(shù)組,需要用 cJSON_GetArrayItem() 函數(shù)來(lái)逐一解析 int size = cJSON_GetArraySize(hobbies); for (int i = 0; i< size; i++) { cJSON* item = cJSON_GetArrayItem(hobbies, i); // 如果數(shù)組中的元素也是一個(gè)JSON字符串,則需要遞歸解析 if (cJSON_IsString(item)) { printf("%s\n", item ->valuestring); } else if (cJSON_IsArray(item)) { parse_nested_array(item); } }
上述代碼中,parse_nested_array() 函數(shù)用于遞歸解析數(shù)組中的元素。
總之,在C語(yǔ)言中解析嵌套JSON字符串并不是一件易于完成的任務(wù),但是使用cJSON的API可以使這一過(guò)程變得更加高效和易于實(shí)現(xiàn)。