c語言中,將json轉化成list是一個常見的需求。但是c語言不像其他語言有內置的json解析庫。因此,我們需要使用第三方庫來實現這一功能。在本文中,我們將介紹如何使用cJSON庫將json轉化成list。
#include <stdio.h> #include <cJSON.h> int main(void) { const char* json = "{ \"name\":\"Jhon\", \"age\":25, \"hobby\":[\"reading\", \"music\"] }"; cJSON* root = cJSON_Parse(json); cJSON* name = cJSON_GetObjectItem(root, "name"); cJSON* age = cJSON_GetObjectItem(root, "age"); cJSON* hobby = cJSON_GetObjectItem(root, "hobby"); printf("name: %s\n", name->valuestring); printf("age: %d\n", age->valueint); printf("hobby:\n"); int i = 0; cJSON* h; cJSON_ArrayForEach(h, hobby) { printf(" %d. %s\n", i++, h->valuestring); } cJSON_Delete(root); return 0; }
首先,我們需要在項目中引入cJSON的頭文件。
#include <cJSON.h>
接著,我們需要準備要解析的json字符串。在本例中,我們將解析如下json字符串:
const char* json = "{ \"name\":\"Jhon\", \"age\":25, \"hobby\":[\"reading\", \"music\"] }";
我們可以使用cJSON_Parse()函數將上述字符串解析成一個cJSON對象。
cJSON* root = cJSON_Parse(json);
接著,我們可以使用cJSON_GetObjectItem()函數獲取json對象中的屬性。例如,我們可以獲取name屬性的值:
cJSON* name = cJSON_GetObjectItem(root, "name");
我們也可以獲取hobby屬性的值。由于hobby是一個數組,我們需要使用cJSON_ArrayForEach()函數遍歷數組中的所有元素:
cJSON* hobby = cJSON_GetObjectItem(root, "hobby"); int i = 0; cJSON* h; cJSON_ArrayForEach(h, hobby) { printf(" %d. %s\n", i++, h->valuestring); }
在解析完成后,我們需要使用cJSON_Delete()函數釋放資源:
cJSON_Delete(root);
到此為止,我們已經成功地將json轉化成了list。
上一篇vue做搜索匹配
下一篇vue faceu區別