欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json 數(shù)據(jù) 解析

在現(xiàn)代Web開(kāi)發(fā)中,JSON數(shù)據(jù)已經(jīng)廣泛使用,它是一種輕量級(jí)的數(shù)據(jù)交換格式,易于人類(lèi)讀寫(xiě)和機(jī)器解析。而C語(yǔ)言作為一種低級(jí)別的編程語(yǔ)言,也可以通過(guò)各種庫(kù)實(shí)現(xiàn)JSON數(shù)據(jù)解析。本文介紹如何使用C語(yǔ)言解析JSON數(shù)據(jù)。

C語(yǔ)言有許多JSON解析庫(kù)可供選擇,如cJSON、JSMN、yajl等。這里我們選擇使用cJSON,這是一個(gè)輕量級(jí)的JSON解析庫(kù),適用于嵌入式設(shè)備和資源有限的系統(tǒng)。

#include <stdio.h>
#include <stdlib.h>
#include <cjson/cJSON.h>
int main() {
const char *json_string = "{ \"name\": \"John Smith\", \"age\": 30, \"score\": [92, 87, 98] }";
cJSON *root = cJSON_Parse(json_string);
if (root == NULL) {
printf("Error in parsing JSON: %s\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *name = cJSON_GetObjectItem(root, "name");
cJSON *age = cJSON_GetObjectItem(root, "age");
cJSON *score = cJSON_GetObjectItem(root, "score");
printf("Name: %s\n", name->valuestring);
printf("Age: %d\n", age->valueint);
cJSON *score_item = NULL;
cJSON_ArrayForEach(score_item, score) {
printf("Score: %d\n", score_item->valueint);
}
cJSON_Delete(root);
return 0;
}

這個(gè)例子中,我們首先定義一個(gè)JSON字符串,它包含一個(gè)名字,一個(gè)年齡和一個(gè)成績(jī)數(shù)組。然后使用cJSON_Parse函數(shù)將字符串解析為cJSON對(duì)象。如果解析出錯(cuò),函數(shù)返回NULL,并通過(guò)cJSON_GetErrorPtr函數(shù)獲取錯(cuò)誤提示。

然后我們使用cJSON_GetObjectItem函數(shù)獲取每個(gè)JSON鍵的值,并通過(guò)valuestring和valueint訪問(wèn)它們的值。對(duì)于數(shù)組,我們可以使用cJSON_ArrayForEach宏迭代它的每個(gè)元素。

最后,我們使用cJSON_Delete函數(shù)釋放cJSON對(duì)象的內(nèi)存。