在C語言中解析嵌套型的JSON可以使用第三方庫,比如cJSON。這篇文章將介紹如何使用cJSON來解析嵌套型的JSON。
/* JSON字符串示例 */ { "name": "John", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "state": "TX", "zip": "12345" } } /* C代碼示例 */ #include#include "cJSON.h" int main() { // 解析JSON字符串 char* json_str = "{ \"name\": \"John\", \"age\": 30, \"address\": { \"street\": \"123 Main St\", \"city\": \"Anytown\", \"state\": \"TX\", \"zip\": \"12345\" } }"; cJSON* json = cJSON_Parse(json_str); // 從JSON中獲取值 cJSON* name = cJSON_GetObjectItem(json, "name"); cJSON* age = cJSON_GetObjectItem(json, "age"); cJSON* address = cJSON_GetObjectItem(json, "address"); cJSON* street = cJSON_GetObjectItem(address, "street"); cJSON* city = cJSON_GetObjectItem(address, "city"); cJSON* state = cJSON_GetObjectItem(address, "state"); cJSON* zip = cJSON_GetObjectItem(address, "zip"); // 輸出值 printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); printf("Address:\n"); printf(" Street: %s\n", street->valuestring); printf(" City: %s\n", city->valuestring); printf(" State: %s\n", state->valuestring); printf(" ZIP: %s\n", zip->valuestring); // 釋放內存 cJSON_Delete(json); return 0; }
使用cJSON解析嵌套型的JSON非常簡單,只需要使用cJSON_Parse函數解析JSON字符串,然后使用cJSON_GetObjectItem函數獲取對象屬性的值即可。