在使用C語言進行解析JSON時,有時候需要同時解析多個key值。
首先,需要使用一個JSON庫,例如cJSON。
以以下JSON為例:
{ "name": "小明", "age": 18, "gender": "男", "hobbies": ["swimming", "reading"], "address": { "province": "廣東", "city": "深圳" } }
假設我們需要解析出name、age和address.province三個key的值。
cJSON *root = cJSON_Parse(jsonStr); if (!root) { // 解析失敗 } cJSON *name = cJSON_GetObjectItem(root, "name"); if (!name) { // 找不到name } cJSON *age = cJSON_GetObjectItem(root, "age"); if (!age) { // 找不到age } cJSON *address = cJSON_GetObjectItem(root, "address"); if (!address) { // 找不到address } cJSON *province = cJSON_GetObjectItem(address, "province"); if (!province) { // 找不到province } printf("name: %s\nage: %d\nprovince: %s\n", name->valuestring, age->valueint, province->valuestring);
以上代碼首先將JSON字符串解析成cJSON對象,然后通過cJSON_GetObjectItem函數獲取對應的key值,最后通過對象的valuestring或valueint屬性獲取值。
需要注意的是,如果獲取不到對應的key值,cJSON_GetObjectItem函數會返回NULL。
通過以上方式,我們就可以方便地解析多個key值,并得到相應的值。