JSON是一種輕量級的數據交換格式,廣泛應用于網絡服務的數據傳輸和存儲中。而在C語言中解析JSON數據,可以使用第三方開發庫cJSON。
在cJSON中,將JSON數據對象化為cJSON\_t類型的結構體,使用cJSON_Parse()函數解析JSON數據,將其轉換為cJSON\_t類型的結構體,然后根據JSON數據格式,使用cJSON_GetObjectItem()函數獲取JSON數據中的各個字段。
// 示例JSON數據: // {"name": "John", "age": 30, "address":["USA","China"]} char *json_data = "{\"name\": \"John\", \"age\": 30, \"address\":[\"USA\",\"China\"]}"; // 解析JSON數據 cJSON* json = cJSON_Parse(json_data); // 獲取JSON數據中的“name”字段 cJSON* name_item = cJSON_GetObjectItem(json, "name"); char* name = name_item->valuestring; // 輸出結果: "John" // 獲取JSON數據中的“age”字段 cJSON* age_item = cJSON_GetObjectItem(json, "age"); int age = age_item->valueint; // 輸出結果:30 // 獲取JSON數據中的“address”數組 cJSON* address_item = cJSON_GetObjectItem(json, "address"); cJSON* address_array_item = cJSON_GetArrayItem(address_item, 0); char* address1 = address_array_item->valuestring; // 輸出結果: "USA" address_array_item = cJSON_GetArrayItem(address_item, 1); char* address2 = address_array_item->valuestring; // 輸出結果: "China" // 釋放cJSON變量內存 cJSON_Delete(json);
在以上示例中,我們通過cJSON_GetArrayItem()函數獲取了JSON數據中的數組,并通過遍歷數組的方式獲取了數組中每個元素的值。
通過以上實例,我們了解了如何在C語言中解析JSON數據,并轉換為C語言中的相應數據類型,可以將其用于API透傳、數據持久化等場景中。