JSON是一種常見的數據交換格式,其簡潔性和易讀性使得它成為前后端交互中重要的一環。在C語言開發中,我們經常需要將JSON串反序列化為結構體,以便處理數據。
C語言中存在一些庫可以實現JSON反序列化功能,比如Jansson、cJSON等。這里我們以Jansson為例,簡單介紹如何使用Jansson反序列化JSON字符串。
/* JSON字符串 */ char *json_str = "{\"name\":\"Tom\",\"age\":18}"; /* JSON解析 */ json_t *root; json_error_t error; root = json_loads(json_str, 0, &error); if(!root){ printf("JSON解析失敗,錯誤信息:line %d: %s\n", error.line, error.text); } /* 反序列化為結構體 */ struct person { char name[128]; int age; }; struct person p; json_unpack(root, "{s:s,s:i}", "name", p.name, "age", &p.age); /* 釋放資源 */ json_decref(root);
這里需要注意的是,json_unpack函數的第一個參數是一個json_t類型的指針,與json_loads函數返回的值類型相同,也就是JSON根節點。第二個參數是一個格式化字符串,用于指定反序列化的屬性以及其類型,這里用到了%s表示字符串,%i表示整型。第三個參數依次指定反序列化的屬性值。
當JSON解析成功后,我們就可以將JSON串反序列化為結構體,以便后續的數據處理。