C語言中常用的JSON庫有多種,比如jansson、cJSON等。本文主要介紹如何將C JSON轉(zhuǎn)換為list。
首先,我們需要了解什么是C JSON。C JSON是一個(gè)用于解析和生成JSON字符串的庫。它提供了JSON對(duì)象的創(chuàng)建、訪問、增刪改查等基本操作。
下面是使用cJSON庫將JSON字符串轉(zhuǎn)換為list的示例代碼:
#include <stdio.h> #include <cJSON.h> int main() { char *str = "{\"name\":\"Tom\", \"age\":20, \"interests\":[\"music\", \"reading\"]}"; cJSON *root = cJSON_Parse(str); if (root) { if (cJSON_IsObject(root)) { cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age"); cJSON *interests = cJSON_GetObjectItemCaseSensitive(root, "interests"); if (cJSON_IsString(name)) { printf("name: %s\n", name->valuestring); } if (cJSON_IsNumber(age)) { printf("age: %d\n", age->valueint); } if (cJSON_IsArray(interests)) { int size = cJSON_GetArraySize(interests); printf("interests:\n"); for (int i = 0; i< size; i++) { cJSON *item = cJSON_GetArrayItem(interests, i); if (cJSON_IsString(item)) { printf("- %s\n", item->valuestring); } } } } cJSON_Delete(root); } return 0; }
在本示例中,我們首先使用cJSON_Parse函數(shù)將JSON字符串解析為cJSON對(duì)象。然后,使用cJSON_GetObjectItemCaseSensitive函數(shù)獲取對(duì)象中的字段,判斷字段是否是正確的類型(如是否是字符串或數(shù)字),并使用cJSON_GetArrayItem函數(shù)獲取數(shù)組中的每個(gè)元素,最后打印出結(jié)果。
總結(jié)來說,通過使用cJSON庫可以很方便地將JSON轉(zhuǎn)換為C語言中的數(shù)據(jù)結(jié)構(gòu),如list、array等。在實(shí)踐中,可以根據(jù)需要選擇不同的JSON庫。