色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json轉成樹

榮姿康2年前10瀏覽0評論

在C語言中,將json數據轉換為樹形結構是一個常見的需求。為了實現這一要求,可以使用cJSON庫提供的函數。

/* 示例json數據 */
{
"name": "Lisa",
"age": 24,
"city": "Shanghai",
"phone": {
"mobile": "13812345678",
"home": "021-1234567"
}
}
/* 定義cJSON節點*/
typedef struct cJSON {
struct cJSON *next, *prev; /* 用于鏈表操作 */
struct cJSON *child; /* 指向子節點 */
int type; /* 節點類型 */
char *valuestring; /* 存儲字符串型節點的值 */
int valueint; /* 存儲整型節點的值 */
double valuedouble; /* 存儲浮點型節點的值 */
} cJSON;
/*將json字符串轉換為cJSON節點*/
cJSON* cJSON_Parse(const char *value);
/* 遍歷cJSON節點,將json數據轉換為樹形結構 */
void travel_node(cJSON *root) {
cJSON *temp = root->child; /* 先定位到根節點的第一個子節點 */
while (temp != NULL) {
printf("%s\n", temp->string); /* 打印節點名稱 */
switch (temp->type) { /* 判斷節點類型 */
case cJSON_Number:
printf("%d\n", temp->valueint); /* 子節點為整型數據,打印值 */
break;
case cJSON_String:
printf("%s\n", temp->valuestring); /* 子節點為字符串數據,打印值 */
break;
case cJSON_Object:
case cJSON_Array:
travel_node(temp); /* 子節點為對象或者數組,先進入此節點遍歷 */
break;
default:
printf("Unknown Type.\n"); /* 未知類型,打印提示信息 */
break;
}
temp = temp->next; /* 繼續遍歷下一個節點 */
}
}

通過上述代碼,我們可以將json字符串解析成為cJSON節點,并且通過遍歷每個節點,可以將其轉換為樹形結構。